home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / inter36a.zip / INTERRUP.C < prev    next >
Text File  |  1993-08-01  |  290KB  |  7,882 lines

  1. Interrupt List, part 3 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------B-1600-------------------------------
  4. INT 16 - KEYBOARD - GET KEYSTROKE
  5.     AH = 00h
  6. Return: AH = BIOS scan code
  7.     AL = ASCII character
  8. Notes:    on extended keyboards, this function discards any extended keystrokes,
  9.       returning only when a non-extended keystroke is available
  10.     the BIOS scan code is usually, but not always, the same as the hardware
  11.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  12.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  13.       differs for shifted special keys.
  14. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
  15. --------B-1601-------------------------------
  16. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  17.     AH = 01h
  18. Return: ZF set if no keystroke available
  19.     ZF clear if keystroke available
  20.         AH = BIOS scan code
  21.         AL = ASCII character
  22. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  23.       however, any extended keystrokes which are not compatible with 83/84-
  24.       key keyboards are removed in the process of checking whether a
  25.       non-extended keystroke is available
  26. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  27. --------B-1602-------------------------------
  28. INT 16 - KEYBOARD - GET SHIFT FLAGS
  29.     AH = 02h
  30. Return: AL = shift flags (see below)
  31. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  32.  
  33. Bitfields for shift flags:
  34.  bit 7    Insert active
  35.  bit 6    CapsLock active
  36.  bit 5    NumLock active
  37.  bit 4    ScrollLock active
  38.  bit 3    Alt key pressed (either Alt on 101/102-key keyboards)
  39.  bit 2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  40.  bit 1    left shift key pressed
  41.  bit 0    right shift key pressed
  42. --------B-1603-------------------------------
  43. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  44.     AH = 03h
  45.     AL = subfunction
  46.         00h set default delay and rate (PCjr and some PS/2)
  47.         01h increase delay before repeat (PCjr)
  48.         02h decrease repeat rate by factor of 2 (PCjr)
  49.         03h increase delay and decrease repeat rate (PCjr)
  50.         04h turn off typematic repeat (PCjr and some PS/2)
  51.         05h set repeat rate and delay (AT,PS)
  52.         BH = delay value (00h = 250ms to 03h = 1000ms)
  53.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  54.         06h get current typematic rate and delay (newer PS/2s)
  55.         Return: BL = repeat rate (see above)
  56.             BH = delay (see above)
  57. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  58.       supported
  59. SeeAlso: INT 16/AH=09h
  60. --------B-1604-------------------------------
  61. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  62.     AH = 04h
  63.     AL = keyclick state
  64.         00h off
  65.         01h on
  66. SeeAlso: AH=03h
  67. --------B-1605-------------------------------
  68. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  69.     AH = 05h
  70.     CH = scan code
  71.     CL = ASCII character
  72. Return: AL = 00h if successful
  73.          01h if keyboard buffer full
  74. Note:    under DESQview, the following "keystrokes" invoke the following
  75.       actions when they are read from the keyboard buffer:
  76.         38FBh or FB00h    switch to next window (only if main menu
  77.                 popped up)
  78.         38FCh or FC00h    pop up DESQview main menu
  79.         38FEh or FE00h    close the current window
  80.         38FFh or FF00h    pop up DESQview learn menu
  81. SeeAlso: AH=00h,AH=71h,AH=FFh,INT 15/AX=DE10h
  82. --------B-1605-------------------------------
  83. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  84.     AH = 05h
  85.     AL = function
  86.         01h set keyboard layout to French
  87.         02h set keyboard layout to German
  88.         03h set keyboard layout to Italian
  89.         04h set keyboard layout to Spanish
  90.         05h set keyboard layout to UK
  91.         80h check if function supported
  92.         Return: AL <> 80h if supported
  93. Return: ???
  94. Note:    called by DOS 3.2 KEYBxx.COM
  95. SeeAlso: AH=92h,AH=A2h
  96. --------B-1609-------------------------------
  97. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  98.     AH = 09h
  99. Return: AL = supported keyboard functions (see below)
  100. Note:    this function is only available if bit 6 of the second feature byte
  101.       returned by INT 15/AH=C0h is set
  102. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  103.  
  104. Bitfields for supported keyboard functions:
  105.  bit 7    reserved
  106.  bit 6    INT 16/AH=20h-22h supported (122-key keyboard support)
  107.  bit 5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  108.  bit 4    INT 16/AH=0Ah supported
  109.  bit 3    INT 16/AX=0306h supported
  110.  bit 2    INT 16/AX=0305h supported
  111.  bit 1    INT 16/AX=0304h supported
  112.  bit 0    INT 16/AX=0300h supported
  113. --------B-160A-------------------------------
  114. INT 16 - KEYBOARD - GET KEYBOARD ID
  115.     AH = 0Ah
  116. Return: BX = keyboard ID or 0000h if no keyboard attached
  117. Note:    check return value from AH=09h to determine whether this function is
  118.       supported
  119. SeeAlso: AH=09h
  120. --------B-1610-------------------------------
  121. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  122.     AH = 10h
  123. Return: AH = BIOS scan code
  124.     AL = ASCII character
  125. Notes:    if no keystroke is available, this function waits until one is placed
  126.       in the keyboard buffer
  127.     the BIOS scan code is usually, but not always, the same as the hardware
  128.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  129.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  130.       differs for shifted special keys.
  131.     unlike AH=00h, this function does not discard extended keystrokes
  132.     INT 16/AH=09h can be used to determine whether this function is
  133.       supported, but only on later model PS/2s
  134. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  135. --------B-1611-------------------------------
  136. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  137.     AH = 11h
  138. Return: ZF set if no keystroke available
  139.     ZF clear if keystroke available
  140.         AH = BIOS scan code
  141.         AL = ASCII character
  142. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  143.     unlike AH=01h, this function does not discard extended keystrokes
  144.     some versions of the IBM BIOS Technical Reference erroneously report
  145.       that CF is returned instead of ZF
  146.     INT 16/AH=09h can be used to determine whether this function is
  147.       supported, but only on later model PS/2s
  148. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  149. --------B-1612-------------------------------
  150. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  151.     AH = 12h
  152. Return: AL = shift flags 1 (same as returned by AH=02h) (see below)
  153.     AH = shift flags 2 (see below)
  154. Notes:    AL bit 3 set only for left Alt key on many machines
  155.     AH bits 7 through 4 always clear on a Compaq SLT/286
  156.     INT 16/AH=09h can be used to determine whether this function is
  157.       supported, but only on later model PS/2s
  158. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  159.  
  160. Bitfields for shift flags 1:
  161.  bit 7    Insert active
  162.  bit 6    CapsLock active
  163.  bit 5    NumLock active
  164.  bit 4    ScrollLock active
  165.  bit 3    Alt key pressed (either Alt on 101/102-key keyboards)
  166.  bit 2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  167.  bit 1    left shift key pressed
  168.  bit 0    right shift key pressed
  169.  
  170. Bitfields for shift flags 2:
  171.  bit 7    SysRq key pressed
  172.  bit 6    CapsLock pressed
  173.  bit 5    NumLock pressed
  174.  bit 4    ScrollLock pressed
  175.  bit 3    right Alt key pressed
  176.  bit 2    right Ctrl key pressed
  177.  bit 1    left Alt key pressed
  178.  bit 0    left Ctrl key pressed
  179. --------B-1620-------------------------------
  180. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  181.     AH = 20h
  182. Return: AH = BIOS scan code (see AH=10h for details)
  183.     AL = ASCII character
  184. Note:    use AH=09h to determine whether this function is supported
  185. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  186. --------B-1621-------------------------------
  187. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  188.     AH = 21h
  189. Return: ZF set if no keystroke available
  190.     ZF clear if keystroke available
  191.         AH = BIOS scan code
  192.         AL = ASCII character
  193. Notes:    use AH=09h to determine whether this function is supported
  194.     some versions of the IBM BIOS Technical Reference erroneously report
  195.       that CF is returned instead of ZF
  196. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  197. --------B-1622-------------------------------
  198. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  199.     AH = 22h
  200. Return: AL = shift flags 1 (see AH=12h)
  201.     AH = shift flags 2 (see AH=12h)
  202. Note:    use AH=09h to determine whether this function is supported
  203. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  204. --------U-164252-----------------------------
  205. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  206.     AX = 4252h
  207. Return: AX = 5242h if installed
  208. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
  209.       PC Magazine utility CAPTURE written by Tom Kihlken
  210. SeeAlso: AX=4253h,AX=4254h
  211. --------U-164253-----------------------------
  212. INT 16 - TEXTCAP 2.0 - UNINSTALL
  213.     AX = 4253h
  214. Return: AX = segment of resident code
  215. Notes:    the uninstall code does not check whether interrupt vectors have been
  216.       chained by other programs
  217.     the caller must free the main memory block (using the returned segment)
  218. SeeAlso: AX=4252h,AX=4254h
  219. --------U-164254-----------------------------
  220. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  221.     AX = 4254h
  222. Return: AX = status
  223.         4254h if screen dump will be written as soon as disk becomes idle
  224.         5442h if screen dump written
  225. SeeAlso: AX=4252h,AX=4253h
  226. --------e-164500-----------------------------
  227. INT 16 - Shamrock Software EMAIL - GET STATUS
  228.     AX = 4500h
  229.     DL = port number (01h = COM1)
  230.     ES:BX -> 13-byte buffer for ASCIZ name
  231. Return: AX = 4D00h if EMAIL installed on specified port
  232.         ES:BX -> "" if no connection
  233.           -> "*" if connection but caller has not identified name
  234.           -> name otherwise
  235.         CX = version (CH = major, CL = minor)
  236.         DL = privilege level of user (00h = guest)
  237.         DH = chosen language (00h German, 01h English)
  238. SeeAlso: AX=4501h,AX=4502h
  239. --------e-164501-----------------------------
  240. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  241.     AX = 4501h
  242.     DL = port number (01h = COM1)
  243. Return: AX = 4D00h if EMAIL installed on specified port
  244.         BX = maximum connect time in clock ticks
  245.         CX = maximum connect time for guests (without name) in clock ticks
  246.         DX = elapsed connect time of current user in clock ticks
  247. SeeAlso: AX=4500h
  248. --------e-164502-----------------------------
  249. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  250.     AX = 4502h
  251.     DL = port number (01h = COM1)
  252. Return: AX = 4D00h if EMAIL installed on specified port
  253.         BL = current value of serial port's Line Control Register
  254.         BH = flags
  255.         bit 0: ISO code
  256.         bit 1: pause
  257.         bit 2: linefeed
  258.         bit 3: ANSI sequences
  259.         CX = selected country code (33 = France, 49 = Germany, etc)
  260.         DX = baudrate divisor (115200/DX = baudrate)
  261. SeeAlso: AX=4500h
  262. --------e-164503-----------------------------
  263. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  264.     AX = 4503h
  265.     DL = port number (01h = COM1)
  266.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  267.     ES:BX -> ASCIZ string with new user command-word
  268. Return: AX = 4D00h if EMAIL installed on specified port
  269. Notes:    a single user command (consisting of only uppercase letters and digits)
  270.       may be defined, and remains valid until it is overwritten or the
  271.       EMAIL program terminates; the user command must be activated by
  272.       calling AX=4504h at least once.
  273.     an existing command word may be redefined with this function
  274. SeeAlso: AX=4504h,AX=4505h
  275. --------e-164504-----------------------------
  276. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  277.     AX = 4504h
  278.     DL = port number (01h = COM1)
  279.     ES:BX -> 80-byte buffer for ASCIZ user input line
  280. Return: AX = 4D00h if EMAIL installed on specified port
  281.         DL = flags
  282.         bit 0: user function supported (always set)
  283.         bit 1: user entered user-function command word
  284.         if DL bit 1 set,
  285.         ES:BX buffer contains line entered by user which begins with
  286.             the defined command word and has been converted to all
  287.             caps
  288. Note:    caller must process the returned commandline and invoke AX=4505h
  289.       within five seconds with the result of that processing
  290. SeeAlso: AX=4503h,AX=4505h
  291. --------e-164505-----------------------------
  292. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  293.     AX = 4505h
  294.     DL = port number (01h = COM1)
  295.     DH = error flag
  296.         bit 3: set on error
  297.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  298. Return: AH = 4Dh if EMAIL installed on specified port
  299.     AL = status
  300.         00h successful
  301.         02h unable to perform function (timeout, prev call not complete)
  302.         other error
  303. Notes:    if the error flag in DH is set, the string is not sent and an error
  304.       message is generated instead; if this function is not called within
  305.       five seconds of AX=4504h, EMAIL automatically generates an error
  306.       message
  307.     the string is copied into an internal buffer, allowing this function's
  308.       caller to continue immediately
  309. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  310. --------e-164506-----------------------------
  311. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  312.     AX = 4506h
  313.     DL = port number (01h = COM1)
  314.     ES:BX -> 13-byte buffer for ASCIZ filename
  315. Return: AX = 4D00h if EMAIL installed on specified port
  316.         DH = Xmodem status
  317.         00h no XGET command given
  318.         01h XGET in progress
  319.         02h XGET completed successfully
  320.         ES:BX buffer filled with last filename given to XGET command
  321.         (without path)
  322. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  323.       return DH=00h
  324. SeeAlso: AX=4500h,INT 17/AX=2408h
  325. --------K-164D4F-----------------------------
  326. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  327.     AX = 4D4Fh
  328. Return: AX = 6F6Dh if installed
  329.         ES = segment of resident code
  330. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  331. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  332. --------J-165000-----------------------------
  333. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  334.     AX = 5000h
  335.     BX = country code
  336.         0001h USA (English), 0051h Japan
  337. Return: AL = status
  338.         00h successful
  339.         01h bad country code
  340.         02h other error
  341. SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
  342. --------J-165001-----------------------------
  343. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  344.     AX = 5001h
  345. Return: AL = status
  346.         00h successful
  347.         BX = country code
  348.         02h error
  349. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  350. --------J-1651-------------------------------
  351. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  352.     AH = 51h
  353. Return: AL = standard shift key states (see AH=12h)
  354.     AH = Kana lock (00h off, 01h on)
  355. SeeAlso: AH=02h,AH=12h,AH=22h
  356. ----------165453BX5242-----------------------
  357. INT 16 - TSRBONES - INSTALLATION CHECK
  358.     AX = 5453h ('TS')
  359.     BX = 5242h ('RB')
  360.     CX = 4F4Eh ('ON')
  361.     DX = 4553h ('ES')
  362. Return: AX = 4553h if installed
  363.     BX = 4F4Eh if installed
  364.     CX = 5242h if installed
  365.     DX = 5453h if installed
  366. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  367. Note:    these values are the default as the TSRBONES package is distributed,
  368.       but will normally be changed when implementing an actual TSR with
  369.       the TSRBONES skeleton
  370. SeeAlso: INT 2D"AMIS"
  371. --------A-165500-----------------------------
  372. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  373.     AX = 5500h
  374. Return: AX = 4D53h ('MS') if keyboard TSR present
  375. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  376.       that are present through this call.
  377.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  378.       handlers; otherwise it assumes that the TSR will handle the keyboard
  379. SeeAlso: INT 1A/AX=3601h
  380. ----------165758BX4858-----------------------
  381. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  382.     AX = 5758h
  383.     BX = 4858h ('HX')
  384.     DX = 4443h ('DC')
  385.     CX <> 5758h
  386. Return: BX = 6878h if installed
  387.     CX = 6463h if installed
  388.         AX = code segment of TSR
  389.         CX = internal version??? (v3.00 returns 0100h)
  390. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  391. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  392.     the cache statistics are located early in the segment pointed at by
  393.       AX on return
  394. ----------165758BX5754-----------------------
  395. INT 16 U - Netroom ??? - ???
  396.     AX = 5758h
  397.     BX = 5754h
  398.     ???
  399. Return: ???
  400. ----------165758BX5754-----------------------
  401. INT 16 U - Netroom ??? - ???
  402.     AX = 5758h
  403.     BX = 5755h
  404.     DS:SI -> ???
  405. Return: ???
  406. ----------165758BX5756-----------------------
  407. INT 16 U - Netroom ??? - INSTALLATION CHECK
  408.     AX = 5758h
  409.     BX = 5756h
  410. Return: BX <> 5756h if installed
  411. ----------165758BX5858-----------------------
  412. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  413.     AX = 5758h
  414.     BX = 5858h
  415. Return: CF clear
  416.     DX:BX -> saved copy of interrupt vector table
  417. Note:    the installation check consists of calling this function and comparing
  418.       BX against 5858h on return; if it has changed, PRENET is installed
  419. SeeAlso: AX=5758h/BX=5859h
  420. Index:    installation check;Netroom PRENET
  421. ----------165758BX5859-----------------------
  422. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  423.     AX = 5758h
  424.     BX = 5859h
  425. Return: CF clear
  426.     DX:BX -> saved copy of interrupt vector table
  427. Note:    the installation check consists of calling this function and comparing
  428.       BX against 5859h on return; if it has changed, POSTNET is installed
  429. SeeAlso: AX=5758h/BX=5858h
  430. Index:    installation check;Netroom POSTNET
  431. --------U-1655FF-----------------------------
  432. INT 16 - Swap Utilities - ???
  433.     AX = 55FFh
  434.     BX >= 0004h
  435.     CX = function
  436.         0000h set ??? flag
  437.         other clear ??? flag
  438. Note:    present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools v7, as
  439.       well as the Trusted Access SCRNBLNK.COM; this may be part of the
  440.       standard TesSeRact library
  441. SeeAlso: INT 2F/AX=5453h
  442. --------U-166969BX6968-----------------------
  443. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  444.     AX = 6969h
  445.     BX = 6968h
  446. Return: resident code unhooked, but not removed from memory
  447. Index:    uninstall;BACKTALK
  448. --------U-166969BX6969-----------------------
  449. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  450.     AX = 6969h
  451.     BX = 6969h
  452.     DX = 0000h
  453. Return: DX nonzero if installed
  454.         BX = CS of resident code
  455.         DX = PSP segment of resident code
  456.         DS:SI -> ASCIZ identification string "CPoint Talk"
  457. ----------166A6B-----------------------------
  458. INT 16 U - FastJuice - DISABLE/UNLOAD???
  459.     AX = 6A6Bh
  460. Return: ???
  461. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  462. SeeAlso: AX=7463h
  463. Index:    uninstall;FastJuice
  464. --------G-166C63-----------------------------
  465. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  466.     AX = 6C63h ('lc')
  467. Return: AX = 4C43h ('LC') if installed
  468. Program: TMED is a freeware resident memory editor by Liang Chen
  469. --------b-166F00BX0000-----------------------
  470. INT 16 - HP HIL Vectras - HP HIL Extended BIOS INSTALLATION CHECK
  471.     AX = 6F00h
  472.     BX = 0000h
  473. Return: BX = 4850h if present
  474. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  475.     supported by ES, QS, and RS series HP Vectras
  476. SeeAlso: AX=6F0Dh
  477. --------b-166F0D-----------------------------
  478. INT 16 - HP HIL Vectras - GET HIL Extended BIOS INTERRUPT NUMBER
  479.     AX = 6F0Dh
  480. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  481. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  482.       input system
  483. SeeAlso: AX=6F0Eh,INT 6F"HP"
  484. --------b-166F0E-----------------------------
  485. INT 16 - HP HIL Vectras - SET HIL Extended BIOS INTERRUPT NUMBER
  486.     AX = 6F0Eh
  487.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  488. Return: AH = status (00h = successful)
  489. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  490.       number in case of an interrupt conflict with another application
  491. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  492.       input system
  493. SeeAlso: AX=6F0Dh,INT 6F"HP"
  494. --------K-1670-------------------------------
  495. INT 16 - FAKEY.COM - INSTALLATION CHECK
  496.     AH = 70h
  497. Return: AX = 1954h if installed
  498. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  499. --------K-1671-------------------------------
  500. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  501.     AH = 71h
  502.     CX = number of keystrokes
  503.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  504. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  505. SeeAlso: AH=05h,AH=72h
  506. --------K-1672-------------------------------
  507. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  508.     AH = 72h
  509. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  510. SeeAlso: AH=71h
  511. --------K-1673-------------------------------
  512. INT 16 - FAKEY.COM - PLAY TONES
  513.     AH = 73h
  514.     CX = number of tones to play
  515.     DS:SI -> array of tones (see below)
  516. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  517. SeeAlso: INT 15/AX=1019h
  518.  
  519. Format of tone array entries:
  520. Offset    Size    Description
  521.  00h    WORD    divisor for timer channel 2
  522.  02h    WORD    duration in clock ticks
  523. ----------167463-----------------------------
  524. INT 16 U - FastJuice - INSTALLATION CHECK
  525.     AX = 7463h ("tc")
  526. Return: AX = 5443h ("TC") if installed
  527. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  528. SeeAlso: AX=6A6Bh
  529. --------R-1675-------------------------------
  530. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  531.     AH = 75h
  532.     AL = number of ticks between checks for new screen changes
  533. --------R-1676-------------------------------
  534. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  535.     AH = 76h
  536.     AL = error checking type
  537.         00h none
  538.         01h fast
  539.         02h slow
  540. --------R-1677-------------------------------
  541. INT 16 - pcANYWHERE III - LOG OFF
  542.     AH = 77h
  543.     AL = mode
  544.         00h wait for another call
  545.         01h leave in Memory Resident Mode
  546.         02h leave in Automatic Mode
  547.         FFh leave in current operating mode
  548. --------U-167761-----------------------------
  549. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  550.     AX = 7761h ('wa')
  551. Return: AX = 5741h ('WA') if installed
  552. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  553. SeeAlso: INT 21/AX=7761h
  554. --------U-167788BX7789-----------------------
  555. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  556.     AX = 7788h
  557.     BX = 7789h
  558.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  559. Return: AX = 7789h if installed and signature correct
  560.     BX = 7788h
  561.     SI destroyed
  562. --------R-1679-------------------------------
  563. INT 16 - pcANYWHERE III - CHECK STATUS
  564.     AH = 79h
  565. Return: AX = status
  566.         FFFFh if resident and active
  567.         FFFEh if resident but not active
  568.         FFFDh if in Memory Resident mode
  569.         FFFCh if in Automatic mode
  570.         other value if not resident
  571. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  572. --------R-167A-------------------------------
  573. INT 16 - pcANYWHERE III - CANCEL SESSION
  574.     AH = 7Ah
  575. --------R-167B00-----------------------------
  576. INT 16 - pcANYWHERE III - SUSPEND
  577.     AX = 7B00h
  578. SeeAlso: AH=79h,AX=7B01h
  579. --------R-167B01-----------------------------
  580. INT 16 - pcANYWHERE III - RESUME
  581.     AX = 7B01h
  582. SeeAlso: AH=79h,AX=7B00h
  583. --------R-167C-------------------------------
  584. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  585.     AH = 7Ch
  586. Return: AH = port number
  587.     AL = baud rate
  588.         00h = 50 baud
  589.         01h = 75 baud
  590.         02h = 110 baud
  591.         03h = 134.5 baud
  592.         04h = 150 baud
  593.         05h = 300 baud
  594.         06h = 600 baud
  595.         07h = 1200 baud
  596.         08h = 1800 baud
  597.         09h = 2000 baud
  598.         0Ah = 2400 baud
  599.         0Bh = 4800 baud
  600.         0Ch = 7200 baud
  601.         0Dh = 9600 baud
  602.         0Eh = 19200 baud
  603. --------R-167D-------------------------------
  604. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  605.     AH = 7Dh
  606.     AL = subfunction
  607.         00h set terminal parameters
  608.         01h get terminal parameters
  609.         02h get configuration header and terminal parameters
  610.     DS:CX -> terminal parameter block
  611. --------R-167E-------------------------------
  612. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  613.     AH = 7Eh
  614.     AL = subfunction
  615.         01h port input status
  616.         Return AX = 0 if no characer ready,
  617.                AX = 1 if character ready
  618.         02h port input character
  619.         Return AL = received character
  620.         03h port output character in CX
  621.         11h hang up phone
  622. --------R-167F-------------------------------
  623. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  624.     AH = 7Fh
  625.     AL = subfunction
  626.         00h enable remote keyboard only
  627.         01h enable host keyboard only
  628.         02h enable both keyboards
  629.         08h display top 24 lines
  630.         09h display bottom 24 lines
  631.         10h Hayes modem
  632.         11h other modem
  633.         12h direct connect
  634. --------U-1680-------------------------------
  635. INT 16 - MAKEY.COM - INSTALLATION CHECK
  636.     AH = 80h
  637. Return: AX = 1954h if installed
  638. Program: MAKEY is a utility by System Enhancement Associates
  639. --------U-168765BX4321-----------------------
  640. INT 16 - AT.COM version 8/26/87 - API
  641.     AX = 8765h
  642.     BX = 4321h
  643.     CX = ??? or FFFFh
  644.     if CX = FFFFh
  645.         DX = number of event to remove or FFFFh
  646. Return: ES:BX -> event record array
  647. Program: AT.COM is a resident scheduler by Bill Frolik
  648.  
  649. Format of event record:
  650. Offset    Size    Description
  651.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  652.  01h    BYTE    day of date on which to trigger
  653.  02h    BYTE    month of date on which to trigger
  654.  03h    BYTE    trigger time, minute
  655.  04h    BYTE    trigger time, hour
  656.  05h    WORD    offset of command to be executed
  657. ----------1692-------------------------------
  658. INT 16 - ???
  659.     AH = 92h
  660. Return: AH <= 80h if ???
  661. Note:    called by DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  662. SeeAlso: AH=05h"PCjr",AH=A2h
  663. --------U-1699-------------------------------
  664. INT 16 - SCOUT v5.4 - GET ???
  665.     AH = 99h
  666. Return: AX = ABCDh
  667.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  668. Program: Scout is a memory-resident file manager by New-Ware
  669. SeeAlso: AH=9Eh
  670. --------U-169E-------------------------------
  671. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  672.     AH = 9Eh
  673. Return: AX = ABCDh if installed
  674. Program: Scout is a memory-resident file manager by New-Ware
  675. SeeAlso: AH=99h
  676. ----------16A2-------------------------------
  677. INT 16 - ???
  678.     AH = A2h
  679. Return: AH <= 80h if ???
  680. Note:    this function is called by DOS 5+ KEYB.COM
  681. SeeAlso: AH=92h
  682. --------V-16AA-------------------------------
  683. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  684.     AH = AAh
  685.     Various registers set up by high level language.
  686. Return: Graphics performed
  687. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  688.       Modula 2 and others from DataBiten in Sweden. The library is
  689.       installed as a memory resident driver.
  690. ----------16AABBBXEEFF-----------------------
  691. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  692.     AX = AABBh
  693.     BX = EEFFh
  694. Return: AX = EEFFh if installed
  695.     BX = AABBh if installed
  696.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  697. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  698.       Co.
  699. Index:    hotkeys;JORJ
  700. --------K-16CA--BX736B-----------------------
  701. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  702.     AH = CAh
  703.     BX = 736Bh ("sk")
  704.     CX = 736Bh
  705.     AL = function
  706.         00h installation check
  707.         Return: DX = words available in keyboard buffer
  708.         01h place keystroke in buffer
  709.         DX = keystroke (DH = scan code, DL = ASCII character)
  710.         Return: DX = words available in keyboard buffer
  711.                 FFFFh on error
  712.         02h flush STACKEY and BIOS keyboard buffers
  713. Return: AX = CAFFh if installed
  714.         BX = segment of resident code
  715.         CX = STACKEY version (CH = major, CL = minor)
  716. Program: STACKEY is a shareware keyboard-input faking TSR
  717. Index:    installation check;STACKEY
  718. --------V-16CA00BX6570-----------------------
  719. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  720.     AX = CA00h
  721.     BX = 6570h ("ep")
  722.     CX = 6570h
  723. Return: AX = CAFFh if installed
  724.         BX = segment of resident code
  725.         CX = ??? (0090h)
  726. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
  727.       permanent across mode switches
  728. SeeAlso: AX=CA00h/BX=7670h
  729. --------V-16CA00BX7670-----------------------
  730. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  731.     AX = CA00h
  732.     BX = 7670h ("vp")
  733.     CX = 7670h
  734. Return: AX = CAFFh if installed
  735.         BX = segment of resident code
  736.         CX = ??? (0090h)
  737. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
  738.       permanent across mode switches
  739. SeeAlso: AX=CA00h/BX=6570h
  740. ----------16D724CX00CB-----------------------
  741. INT 16 U - APCAL v3.20 - GET ???
  742.     AX = D724h
  743.     CX = 00CBh
  744. Return: AX = 0000h
  745.     BX = 0000h
  746.     DX:CX -> ??? or 0000h:0000h
  747. Program: APCAL is an optionally-resident shareware appointment calendar by
  748.       Gamma Software
  749. SeeAlso: AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  750. ----------16D724CX00CC-----------------------
  751. INT 16 U - APCAL v3.20 - GET ???
  752.     AX = D724h
  753.     CX = 00CCh
  754. Return: AX = 0000h
  755.     BX = 0000h
  756.     DX:CX -> ??? (apparently an internal data area)
  757. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  758. ----------16D724CX00CD-----------------------
  759. INT 16 U - APCAL v3.20 - GET ???
  760.     AX = D724h
  761.     CX = 00CDh
  762. Return: AX = ??? (5345h seen)
  763. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  764. --------t-16E0E0-----------------------------
  765. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  766.     AX = E0E0h
  767. Return: AX = 1F1Fh if installed
  768.         DWORD 0040h:00F0h -> last data block in TSR list (see AX=F0F0h)
  769. Note:    the returned TSR list provides support for communication among TSRs
  770.       built with TurboPower's Turbo Professional and Object Professional
  771.       libraries for Turbo Pascal
  772. SeeAlso: AX=F0F0h
  773. --------U-16ED--BHED-------------------------
  774. INT 16 - BORLAND TURBO LIGHTNING - API
  775.     AH = EDh
  776.     BH = EDh
  777.     BL = function
  778.         00h installation check
  779.         Return: AX = 5205h
  780.             CH = major version
  781.             CL = minor version
  782.         01h ???
  783.         02h get resident CS
  784.         Return: AX = code segment of resident portion
  785.         03h get resident ???
  786.         Return: AX = offset of some buffer in resident code seg
  787.         04h ???
  788.         05h set ???
  789.         AL = 0 to 0Ch
  790.         Return: AX = status
  791.                 0000h if OK
  792.                 0001h if out of range.
  793.         06h ???
  794.         07h ???
  795.         08h ???
  796.         AL = char???
  797.         CX = ???
  798.         DX = ???
  799.         Return: AX = 0, 1 or 2
  800.         09h ???
  801.         0Ah ???
  802.         CX = ???
  803.         DX = ???
  804.         Return: AX = ???
  805.         0Bh ???
  806.         DS:SI -> ???
  807.         Return: AX = 0, 40h, 80h
  808.         0Ch ???
  809.         DS:SI -> ???
  810.         Return: AH = 0
  811.             AL = ???
  812.         0Dh set ???
  813.         (sets an internal flag)
  814.         0Eh ???
  815.         DS:SI -> ???
  816.         Return: AX = 0, 1 or 2.
  817.         0Fh ???
  818.         10h ???
  819. Notes:    AX in general returns an error code from most functions.
  820. Index:    installation check;Turbo Lightning
  821. ----------16EF-------------------------------
  822. INT 16 - CALCULATOR - INSTALLATION CHECK
  823.     AH = EFh
  824. Return: AX = 0088h if installed
  825. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  826.       Marek Kosznik
  827. --------b-16F0-------------------------------
  828. INT 16 - Compaq 386 - SET CPU SPEED
  829.     AH = F0h
  830.     AL = speed
  831.         00h equivalent to 6 MHz 80286 (COMMON)
  832.         01h equivalent to 8 MHz 80286 (FAST)
  833.         02h full 16 MHz (HIGH)
  834.         03h toggles between 8 MHz-equivalent and speed set by system board
  835.         switch (AUTO or HIGH)
  836.         08h full 16 MHz except 8 MHz-equivalent during floppy disk access
  837.         09h specify speed directly
  838.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  839. SeeAlso: AH=F1h,AH=F3h
  840. --------t-16F0F0-----------------------------
  841. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  842.     AX = F0F0h
  843. Return: AX = 0F0Fh if installed
  844.         ES:DI -> last data block in TSR list
  845. Note:    the returned TSR list provides support for communication among TSRs
  846.       built with TurboPower's Turbo Professional and Object Professional
  847.       libraries for Turbo Pascal
  848. SeeAlso: AX=E0E0h
  849.  
  850. Format of data block:
  851. Offset    Size    Description
  852.  00h    DWORD    pointer to program tag (counted ASCII string)
  853.  04h    WORD    interface version number (0400h)
  854.  06h    DWORD    pointer to command entry point
  855.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  856.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  857. ---swappable TSRs only---
  858.  12h    DWORD    pointer to swapping data
  859.  16h    DWORD    pointer to user data
  860.     more???
  861. --------b-16F1-------------------------------
  862. INT 16 - Compaq 386 - READ CURRENT CPU SPEED
  863.     AH = F1h
  864. Return: AL = speed code (see AH=F0h)
  865.          if AL = 09h, CX = speed code
  866. SeeAlso: AH=F0h,AH=F3h
  867. --------b-16F2-------------------------------
  868. INT 16 - Compaq 386 - DETERMINE ATTACHED KEYBOARD TYPE
  869.     AH = F2h
  870. Return: AL = type
  871.         00h if 11-bit AT keyboard is in use
  872.         01h if 9-bit PC keyboard is in use
  873. --------b-16F3-------------------------------
  874. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  875.     AH = F3h
  876.     AL = 00h limit is 6 Mhz
  877.        = 01h limit is 8 Mhz/6 Mhz
  878. SeeAlso: AH=F0h,AH=F1h
  879. --------U-16F398-----------------------------
  880. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  881.     AX = F398h
  882. Return: AX = 6A73h ("js")
  883.     BH = scan code of current hot key
  884.     BL = ASCII code of current hot key
  885. Note:    NG.EXE was written by John Socha
  886. --------b-16F400-----------------------------
  887. INT 16 - Compaq Systempro - CACHE CONTROLLER STATUS
  888.     AX = F400h
  889. Return: AH = E2h
  890.     AL = status
  891.         00h not present
  892.         01h enabled
  893.         02h disabled
  894. SeeAlso: AX=F401h,AX=F402h
  895. --------b-16F401-----------------------------
  896. INT 16 - Compaq Systempro - ENABLE CACHE CONTROLLER
  897.     AX = F401h
  898. Return: AX = E201h
  899. SeeAlso: AX=F400h,AX=F402h
  900. --------b-16F402-----------------------------
  901. INT 16 - Compaq Systempro - DISABLE CACHE CONTROLLER
  902.     AX = F402h
  903. Return: AX = E202h
  904. SeeAlso: AX=F400h,AX=F401h
  905. --------v-16FA00DX5945-----------------------
  906. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK???
  907.     AX = FA00h
  908.     DX = 5945h
  909. Return: CF clear
  910.     DI = 4559h
  911.     BX = ??? (2F00h or FFFFh) (VSAFE only)
  912. SeeAlso: INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  913. --------v-16FA01DX5945-----------------------
  914. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  915.     AX = FA01h
  916.     DX = 5945h
  917. Return: CF clear if successful
  918.     DI = 4559h
  919. SeeAlso: AX=FA00h
  920. --------v-16FA02DX5945-----------------------
  921. INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
  922.     AX = FA02h
  923.     DX = 5945h
  924.     BL = ???
  925. Return: CF clear
  926.     DI = 4559h
  927.     CL = old value of ???
  928. --------v-16FA03DX5945-----------------------
  929. INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
  930.     AX = FA03h
  931.     DX = 5945h
  932. Return: CF clear
  933.     DI = 4559h
  934.     AX = 0002h
  935. --------v-16FA04DX5945-----------------------
  936. INT 16 U - PC Tools v8+ VSAFE - GET ???
  937.     AX = FA04h
  938.     DX = 5945h
  939. Return: CF clear
  940.     DI = 4559h
  941.     BL = ???
  942. Note:    this function is a NOP under VWATCH
  943. SeeAlso: AX=FA05h
  944. --------v-16FA05DX5945-----------------------
  945. INT 16 U - PC Tools v8+ VSAFE - SET ???
  946.     AX = FA05h
  947.     DX = 5945h
  948.     BL = ???
  949. Return: CF clear
  950.     DI = 4559h
  951. Note:    this function is a NOP under VWATCH
  952. SeeAlso: AX=FA04h
  953. --------v-16FA06DX5945-----------------------
  954. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  955.     AX = FA06h
  956.     DX = 5945h
  957. Return: CF clear
  958.     DI = 4559h
  959.     BL = ???
  960. SeeAlso: AX=FA07h
  961. --------v-16FA07DX5945-----------------------
  962. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET ???
  963.     AX = FA07h
  964.     DX = 5945h
  965.     BL = ???
  966. Return: CF clear
  967.     DI = 4559h
  968. SeeAlso: AX=FA00h,AX=FA06h
  969. --------U-16FE55-----------------------------
  970. INT 16 U - PC Tools v8+ DATAMON, DRIVEMAP, CPSCHED, CPTASK - ???
  971.     AX = FE55h
  972.     CX = segment of resident CPTASK or 0000h???
  973.     DX = ???
  974.     ???
  975. Return: DX:AX -> ???
  976. --------U-16FEA4-----------------------------
  977. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  978.     AX = FEA4h
  979. Return: nothing
  980. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  981.       code in DESKTOP
  982. SeeAlso: AX=FFA4h
  983. --------U-16FEC6-----------------------------
  984. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  985.     AX = FEC6h
  986.     BL = new state (00h enabled, nonzero disabled)
  987. Return: nothing
  988. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  989.       be honored
  990. --------U-16FED3-----------------------------
  991. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  992.     AX = FED3h
  993.     DS:SI -> 92-byte data record for ???
  994. Return: ???
  995. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  996.       code in DESKTOP
  997. SeeAlso: AX=FFD3h
  998. --------U-16FEDC-----------------------------
  999. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  1000.     AX = FEDCh
  1001. Return: AX,DX destroyed
  1002. Index:    uninstall;CPSCHED
  1003. --------U-16FEEFCX0000-----------------------
  1004. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  1005.     AX = FEEFh
  1006.     CX = 0000h
  1007. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  1008.         BX = segment of resident portion
  1009.         DX = (CPSCHED v8.0) resident CS
  1010. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  1011.       code in DESKTOP
  1012. SeeAlso: AX=FFEFh
  1013. --------U-16FEF1-----------------------------
  1014. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  1015.     AX = FEF1h
  1016.     BX = ???
  1017. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  1018.     DX = 5555h
  1019. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  1020.       code in DESKTOP
  1021. SeeAlso: AX=FFF1h
  1022. --------K-16FF-------------------------------
  1023. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  1024.     AH = FFh
  1025.     DX = scan code
  1026. Return: AL = status
  1027.         00h success
  1028.         01h failure
  1029. Program: KBUF is a keyboard buffer expander by Mark Adler
  1030. SeeAlso: AH=05h
  1031. --------V-16FF-------------------------------
  1032. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  1033.     AH = FFh
  1034. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  1035.     AL+1 = Zoom interrupt number
  1036.     BX = hotkey
  1037. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  1038.       the default hot key is F10
  1039.     not all vendors include the Tseng TSR which supports these functions
  1040. SeeAlso: INT 60"OPTIMA"
  1041. Index:    hotkeys;OPTIMA 1024 VGA
  1042. --------d-16FF70-----------------------------
  1043. INT 16 U - PC Tools v8+ DRIVEMAP - API
  1044.     AX = FF70h
  1045.     BX = function (0000h-0002h)
  1046.         0000h installation check
  1047.         CX = 4C69h ('Li')
  1048.         DX = 6E6Bh ('nk')
  1049.         Return: AX = 0000h
  1050.             CX = 4350h ('CP')
  1051.             DH = major version
  1052.             DL = minor version
  1053.         0001h ???
  1054.         DL = ???
  1055.         Return: AX = ???
  1056.             DH = ???
  1057.         0002h ???
  1058.         BX = ???
  1059.         DX = ???
  1060.         Return: AX = ??? or FFFEh/FFFFh on error
  1061.             DL = ???
  1062. BUG:    this call will branch to random locations for BX values other than
  1063.       those listed above for v8.0 because a) the incorrect register is
  1064.       range-tested, resulting in BX=0003h-5CD6h being accepted as valid
  1065.       function numbers, and b) the conditional which branches on invalid
  1066.       function numbers jumps to the following instruction, becoming a NOP
  1067. SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
  1068. Index:    installation check;DRIVEMAP
  1069. --------T-16FF80BX0000-----------------------
  1070. INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
  1071.     AX = FF80h
  1072.     BX = 0000h
  1073.     CX = 0000h
  1074.     DX = 0000h
  1075. Return: CX = 5555h if installed
  1076. Program: CPTASK is a task switcher by Central Point Software
  1077. --------T-16FF80BX0001-----------------------
  1078. INT 16 U - PC Tools v8+ CPTASK - GET ???
  1079.     AX = FF80h
  1080.     BX = 0001h
  1081.     ???
  1082. Return: DX:SI -> task list???
  1083.     BX = ??? (PSP segment of resident code???)
  1084. --------T-16FF80BX0002-----------------------
  1085. INT 16 U - PC Tools v8+ CPTASK - GET ???
  1086.     AX = FF80h
  1087.     BX = 0002h
  1088. Return: DX:SI -> ???
  1089. --------T-16FF80BX0003-----------------------
  1090. INT 16 U - PC Tools v8+ CPTASK - GET ???
  1091.     AX = FF80h
  1092.     BX = 0003h
  1093. Return: AX = ???
  1094. --------T-16FF80BX0004-----------------------
  1095. INT 16 U - PC Tools v8+ CPTASK - SET ???
  1096.     AX = FF80h
  1097.     BX = 0004h
  1098.     CX = new value of ???
  1099. Return: ???
  1100. Note:    this function also sets the ??? flag
  1101. --------T-16FF80BX0005-----------------------
  1102. INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
  1103.     AX = FF80h
  1104.     BX = 0005h
  1105. Return: AX = number of active tasks???
  1106. --------T-16FF80BX0006-----------------------
  1107. INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
  1108.     AX = FF80h
  1109.     BX = 0006h
  1110. Return: AX = old state (0000h clear, 0001h set)
  1111. --------T-16FF80BX0007-----------------------
  1112. INT 16 U - PC Tools v8+ CPTASK - ???
  1113.     AX = FF80h
  1114.     BX = 0007h
  1115.     ES:DI -> ???
  1116.     ???
  1117. Return: ???
  1118. --------T-16FF80BX0008-----------------------
  1119. INT 16 U - PC Tools v8+ CPTASK - ???
  1120.     AX = FF80h
  1121.     BX = 0008h
  1122.     ???
  1123. Return: ???
  1124. --------T-16FF80BX0009-----------------------
  1125. INT 16 U - PC Tools v8+ CPTASK - GET ???
  1126.     AX = FF80h
  1127.     BX = 0009h
  1128. Return: CL = ???
  1129.     CH = ??? (01h or 02h)
  1130. --------T-16FF80BX4350-----------------------
  1131. INT 16 U - PC Tools v8+ CPTASK - ???
  1132.     AX = FF80h
  1133.     BX = 4350h ('CP')
  1134.     CX = 5354h ('ST')
  1135.     ???
  1136. Return: ???
  1137. --------U-16FF90-----------------------------
  1138. INT 16 U - PC Tools v8+ DESKTOP - ???
  1139.     AX = FF90h
  1140.     ???
  1141. Return: ???
  1142. Note:    available only when popped up
  1143. --------U-16FF91-----------------------------
  1144. INT 16 U - PC Tools v7+ DESKTOP - ???
  1145.     AX = FF91h
  1146.     ???
  1147. Return: AX = 0000h
  1148. Note:    calls AX=FFFDh after ???
  1149. SeeAlso: AX=FF92h,AX=FFFDh
  1150. --------U-16FF92-----------------------------
  1151. INT 16 U - PC Tools v7+ DESKTOP - ???
  1152.     AX = FF92h
  1153.     ???
  1154. Return: AX = 0000h
  1155. Note:    like AX=FF91h, but temporarily sets ??? to 3
  1156. SeeAlso: AX=FF91h,AX=FF92h
  1157. --------U-16FF93-----------------------------
  1158. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  1159.     AX = FF93h
  1160. --------U-16FF94-----------------------------
  1161. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  1162.     AX = FF94h
  1163.     CX = ??? (default 0017h)
  1164. --------U-16FF95-----------------------------
  1165. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  1166.     AX = FF95h
  1167.     BX = ???
  1168. --------U-16FF96-----------------------------
  1169. INT 16 U - PC Tools v7+ DESKTOP - ???
  1170.     AX = FF96h
  1171.     CL = ???
  1172. Return: AX = ???
  1173. --------U-16FF97-----------------------------
  1174. INT 16 U - PC Tools v7+ DESKTOP - ???
  1175.     AX = FF97h
  1176.     DS:DX -> buffer for ??? (see below)
  1177. Return: ???
  1178.  
  1179. Format of buffer:
  1180. Offset    Size    Description
  1181.  00h 48 BYTEs    ???
  1182.  30h 128 BYTEs    ???
  1183. --------U-16FF98-----------------------------
  1184. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  1185.     AX = FF98h
  1186.     DX = byte offset in file of overlay header
  1187. Return: BX = file handle for DESK.OVL file
  1188. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  1189.       overlay header, and seek to the offset specified by the header
  1190.  
  1191. Format of overlay header:
  1192. Offset    Size    Description
  1193.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  1194.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  1195. --------U-16FF99-----------------------------
  1196. INT 16 U - PC Tools v7+ DESKTOP - ???
  1197.     AX = FF99h
  1198.     ???
  1199. Return: ???
  1200. --------U-16FF9A-----------------------------
  1201. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  1202.     AX = FF9Ah
  1203. Return: ES:BX -> name of current color scheme
  1204. Note:    available even if not popped up
  1205. --------U-16FF9B-----------------------------
  1206. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  1207.     AX = FF9Bh
  1208. Return: ???
  1209. Note:    sounds triple-length beep
  1210. --------T-16FF9C-----------------------------
  1211. INT 16 U - PC Tools v8+ CPTASK - ???
  1212.     AX = FF9Ch
  1213.     BL = ??? (00h,01h,02h)
  1214.     ???
  1215. Return: ???
  1216. Note:    sounds triple-length beep
  1217. ----------16FF9D-----------------------------
  1218. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  1219.     AX = FF9Dh
  1220.     ES:BX -> ??? word
  1221. Return: ???
  1222. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  1223.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  1224.       flag is always cleared if ES=0000h.
  1225. --------U-16FF9E-----------------------------
  1226. INT 16 U - PC Tools v7+ DESKTOP - ???
  1227.     AX = FF9Eh
  1228.     DL = ???
  1229.         bit 7: ???
  1230.         bits 6-0: function number??? (00h,01h,other)
  1231.     ???
  1232. Return: ???
  1233. --------U-16FFA1-----------------------------
  1234. INT 16 U - PC Tools v7+ DESKTOP - ???
  1235.     AX = FFA1h
  1236.     ???
  1237. Return: ???
  1238. Note:    same as AX=FFA2h, except ??? set to FFh
  1239. SeeAlso: AX=FFA2h
  1240. --------U-16FFA2-----------------------------
  1241. INT 16 U - PC Tools v7+ DESKTOP - ???
  1242.     AX = FFA2h
  1243.     ???
  1244. Return: ???
  1245. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  1246. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  1247. --------y-16FFA3BX0000-----------------------
  1248. INT 16 U - PC Tools v7+ DATAMON - INSTALLATION CHECK
  1249.     AX = FFA3h
  1250.     BX = 0000h
  1251.     CX = 0000h
  1252. Return: AX = segment of resident code
  1253.     BX = 5555h
  1254.     CX = 5555h
  1255. SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h
  1256. --------y-16FFA3BX0001-----------------------
  1257. INT 16 U - PC Tools v7+ DATAMON - GET ???
  1258.     AX = FFA3h
  1259.     BX = 0001h
  1260.     CX = 0001h
  1261. Return: AX:BX -> ???
  1262.     CX = BX
  1263. --------y-16FFA3BX0002-----------------------
  1264. INT 16 U - PC Tools v7+ DATAMON - GET ???
  1265.     AX = FFA3h
  1266.     BX = 0002h
  1267.     CX = 0002h
  1268. Return: AX = ??? (0 or 1)
  1269.     CX = BX = AX
  1270. --------y-16FFA3BX0003-----------------------
  1271. INT 16 U - PC Tools v7+ DATAMON - GET ???
  1272.     AX = FFA3h
  1273.     BX = 0003h
  1274.     CX = 0003h
  1275. Return: AX = ??? (0 or 1)
  1276.     CX = BX = AX
  1277. --------y-16FFA3BX0004-----------------------
  1278. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  1279.     AX = FFA3h
  1280.     BX = 0004h
  1281.     CX = 0004h
  1282. SeeAlso: AX=FFA3h/BX=0005h
  1283. --------y-16FFA3BX0005-----------------------
  1284. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  1285.     AX = FFA3h
  1286.     BX = 0005h
  1287.     CX = 0005h
  1288. SeeAlso: AX=FFA3h/BX=0004h
  1289. --------y-16FFA3BX0006-----------------------
  1290. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  1291.     AX = FFA3h
  1292.     BX = 0006h
  1293.     CX = 0006h
  1294.     DX = current PSP segment as known to DOS??? or 0000h
  1295. --------U-16FFA4-----------------------------
  1296. INT 16 U - PC Tools v7+ DESKTOP - ???
  1297.     AX = FFA4h
  1298. Return: ???
  1299. Notes:    available even when not popped up
  1300.     sets unknown flag if ??? conditions met
  1301. SeeAlso: AX=FEA4h
  1302. --------c-16FFA5CX1111-----------------------
  1303. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  1304.     AX = FFA5h
  1305.     CX = 1111h
  1306. Return: CH = 00h if installed
  1307.         ES:DI -> internal data (see below)
  1308.         CL = cache state
  1309.         01h enabled
  1310.         02h disabled
  1311. SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  1312.  
  1313. Format of internal data:
  1314. Offset    Size    Description
  1315. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  1316.         each byte is either blank (20h) or drive letter (41h-54h)
  1317.  -8    BYTE    ???
  1318.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  1319.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  1320.  -3   3 BYTEs    ???
  1321. --------c-16FFA5CXAAAA-----------------------
  1322. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  1323.     AX = FFA5h
  1324.     CX = AAAAh
  1325. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  1326. SeeAlso: AX=FFA5h/CX=CCCCh
  1327. --------c-16FFA5CXCCCC-----------------------
  1328. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  1329.     AX = FFA5h
  1330.     CX = CCCCh
  1331. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  1332. Note:    delayed writes are automatically disabled on EXECing
  1333.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  1334.       however, delayed writes are not automatically reenabled upon the
  1335.       program's termination in v6.
  1336. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  1337. --------c-16FFA5CXDDDD-----------------------
  1338. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  1339.     AX = FFA5h
  1340.     CX = DDDDh
  1341. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  1342. --------c-16FFA5CXEEEE-----------------------
  1343. INT 16 - PC-Cache v6+ - ENABLE CACHE
  1344.     AX = FFA5h
  1345.     CX = EEEEh
  1346. SeeAlso: AX=FFA5h/CX=DDDDh
  1347. --------c-16FFA5CXFFFF-----------------------
  1348. INT 16 - PC-Cache v6+ - FLUSH CACHE
  1349.     AX = FFA5h
  1350.     CX = FFFFh
  1351. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  1352. --------U-16FFA6-----------------------------
  1353. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
  1354.     AX = FFA6h
  1355. Return: DS:SI -> ???
  1356. Note:    available only when popped up
  1357. --------U-16FFA7-----------------------------
  1358. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ??? PATH
  1359.     AX = FFA7h
  1360. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  1361. --------U-16FFA8-----------------------------
  1362. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  1363.     AX = FFA8h
  1364.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  1365.     ???
  1366. Return: ???
  1367. Notes:    available only when popped up
  1368.     strings copied into internal buffer, among other actions
  1369. --------U-16FFA9-----------------------------
  1370. INT 16 U - PC Tools v6.0+ DESKTOP API - GET VERSION STRING
  1371.     AX = FFA9h
  1372. Return: DS:SI -> version string
  1373. --------U-16FFAA-----------------------------
  1374. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  1375.     AX = FFAAh
  1376.     ???
  1377. Return: ???
  1378. Note:    available only when popped up
  1379. --------U-16FFAB-----------------------------
  1380. INT 16 U - PC Tools v6.0+ DESKTOP API - GET EDITOR SETTINGS???
  1381.     AX = FFABh
  1382. Return: DS:SI -> editor setting strings???
  1383. --------U-16FFAC-----------------------------
  1384. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1385.     AX = FFACh
  1386.     DL = ???
  1387. Note:    available only when popped up
  1388. --------U-16FFAD-----------------------------
  1389. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1390.     AX = FFADh
  1391.     DL = ???
  1392. --------U-16FFAE-----------------------------
  1393. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
  1394.     AX = FFAEh
  1395. Return: AL = ???
  1396. --------U-16FFAF-----------------------------
  1397. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1398.     AX = FFAFh
  1399.     DL = ???
  1400. --------U-16FFB0-----------------------------
  1401. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1402.     AX = FFB0h
  1403.     BL = ???
  1404. --------U-16FFB1-----------------------------
  1405. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  1406.     AX = FFB1h
  1407.     ???
  1408. Return: ???
  1409. --------U-16FFB2-----------------------------
  1410. INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
  1411.     AX = FFB2h
  1412. Return: DS:SI -> ???
  1413. --------U-16FFB3-----------------------------
  1414. INT 16 U - PC Tools v5.5+ DESKTOP API - ???
  1415.     AX = FFB3h
  1416.     ???
  1417. Return: ???
  1418. Note:    available only when popped up
  1419. --------U-16FFB4-----------------------------
  1420. INT 16 U - PC Tools v5.5+ DESKTOP API - SET ??? FLAG
  1421.     AX = FFB4h
  1422. Note:    available only when popped up
  1423. SeeAlso: AX=FFBBh
  1424. --------U-16FFB5-----------------------------
  1425. INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET WINDOW PARAMETERS
  1426.     AX = FFB5h
  1427.     BX = window specifier (000Fh to 0019h) (see below)
  1428.     DX = 0000h get, nonzero = set
  1429.     ES:DI -> window parameter buffer (see below)
  1430. SeeAlso: AX=FFCBh
  1431.  
  1432. Values for window specifier:
  1433.  000Fh    comm/FAX
  1434.  0014h    hotkey selection
  1435.  0015h    ASCII table
  1436.  0016h    system colors menu
  1437.  
  1438. Format of window parameters:
  1439. Offset    Size    Description
  1440.  00h    BYTE    rows in window, not counting frame
  1441.  01h    BYTE    columns in window, not counting frame
  1442.  02h    BYTE    row number of top of window
  1443.  03h    BYTE    2*column number of left of window
  1444.  04h    BYTE    character attribute for ???
  1445.  05h    BYTE    character attribute for background/border
  1446.  06h    BYTE    character attribute for ???
  1447.  07h    DWORD    pointer to ??? on screen
  1448.  0Bh  4 BYTEs    ???
  1449.  0Fh    BYTE    nonzero if window may be resized
  1450. Note:    if running in monochrome mode, character attributes at offsets 04h to
  1451.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  1452.       are changed to 07h on reading
  1453. --------U-16FFB6-----------------------------
  1454. INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
  1455.     AX = FFB6h
  1456. Return: AH = ???
  1457.     AL = ???
  1458. --------U-16FFB7-----------------------------
  1459. INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET ???
  1460.     AX = FFB7h
  1461.     BX = direction
  1462.         0000h copy to buffer
  1463.         else  copy from buffer
  1464.     DS:SI -> 70-byte buffer with ???
  1465. Return: data copied
  1466. Note:    available only when popped up under v6.0+
  1467. --------U-16FFB8-----------------------------
  1468. INT 16 U - PC Tools v5.1+ DESKTOP API - GET/SET???
  1469.     AX = FFB8h
  1470.     BH = subfunction
  1471.         00h get
  1472.         Return: BL = old value of ???
  1473.             CL = old value of ??? (v6.0+)
  1474.             CH = old value of ??? (v6.0+)
  1475.         nonzero set
  1476.         BL = new value for ???
  1477.         CL = new value for ??? (v6.0+)
  1478.         CH = new value for ??? (v6.0+)
  1479.         DH = ???
  1480.         Return: AL = old value replaced by CL (v6.0+)
  1481.             AH = old value replaced by CH (v6.0+)
  1482. --------U-16FFB9-----------------------------
  1483. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1484.     AX = FFB9h
  1485.     ???
  1486. Return: AX = ???
  1487.     CX = ???
  1488.     DS:SI -> ???
  1489.     ES:DI -> ???
  1490. --------U-16FFBA-----------------------------
  1491. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1492.     AX = FFBAh
  1493.     ???
  1494. Return: AX = ???
  1495. Note:    available only when popped up
  1496. --------U-16FFBB-----------------------------
  1497. INT 16 U - PC Tools v5.1+ DESKTOP API - CLEAR ??? FLAG
  1498.     AX = FFBBh
  1499. Note:    available only when popped up
  1500. SeeAlso: AX=FFB4h
  1501. --------U-16FFBC-----------------------------
  1502. INT 16 U - PC Tools v5.1+ DESKTOP API - RESTORE ORIGINAL SCREEN???
  1503.     AX = FFBCh
  1504. --------U-16FFBD-----------------------------
  1505. INT 16 U - PC Tools v5.1+ DESKTOP API - ??? DATABASE INDEXING MESSAGES
  1506.     AX = FFBDh
  1507.     ???
  1508. Return: ???
  1509. --------U-16FFBE-----------------------------
  1510. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1511.     AX = FFBEh
  1512.     ???
  1513. Return: ???
  1514. Note:    available only when popped up
  1515. --------U-16FFBF-----------------------------
  1516. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1517.     AX = FFBFh
  1518.     BX = DOS file handle to write on
  1519.     ???
  1520. Return: ???
  1521. Note:    available only when popped up
  1522. --------U-16FFC0-----------------------------
  1523. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1524.     AX = FFC0h
  1525.     ???
  1526. Return: AX = 0000h if successful
  1527.     AX = FFFFh on error
  1528. Note:    available only when popped up
  1529. --------U-16FFC1-----------------------------
  1530. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1531.     AX = FFC1h
  1532.     BL = ???
  1533.     ES:DI -> data structure (see below)
  1534.     ???
  1535. Return: AX = ???
  1536. Note:    available only when popped up
  1537. SeeAlso: AX=FFC2h,AX=FFC3h
  1538.  
  1539. Format of data structure:
  1540. Offset    Size    Description
  1541.  00h    WORD    ???
  1542.  02h    WORD    ???
  1543.  04h    WORD    ???
  1544.  06h    WORD    ???
  1545.  08h    WORD    ???
  1546.  0Ah    BYTE    ???
  1547.  0Bh    BYTE    ??? (zero/nonzero)
  1548. ---v7.1---
  1549.  0Ch    WORD    ???
  1550.  0Eh    BYTE    ???
  1551.  0Fh    WORD    ???
  1552.  11h    WORD    ???
  1553.     ???
  1554. --------U-16FFC2-----------------------------
  1555. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1556.     AX = FFC2h
  1557.     BL = ???
  1558.     ES:DI -> data structure (see AX=FFC1h)
  1559.     ???
  1560. Return: AH = ???
  1561.     CX = ???
  1562.     DH = ???
  1563.     DL = ???
  1564. Note:    available only when popped up
  1565. SeeAlso: AX=FFC1h,AX=FFC3h
  1566. --------U-16FFC3-----------------------------
  1567. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1568.     AX = FFC3h
  1569.     BL = ???
  1570.     ES:DI -> data structure (see AX=FFC1h)
  1571.     ???
  1572. Return: AH = ???
  1573.     CX = ???
  1574.     DH = ???
  1575.     DL = ???
  1576. Note:    available only when popped up
  1577. SeeAlso: AX=FFC1h,AX=FFC2h
  1578. --------U-16FFC4-----------------------------
  1579. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1580.     AX = FFC4h
  1581. Return: AL = ???
  1582.     BX = segment of scratch space???
  1583.     CX = segment of stored screen data (section covered by window???)
  1584.     DX = segment of window parameters for ???
  1585.     ES:BP -> ???
  1586. Note:    available only when popped up in versions prior to 6.0
  1587. --------U-16FFC5-----------------------------
  1588. INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK WHETHER DESKTOP LOADED RESIDENT
  1589.     AX = FFC5h
  1590. Return: BL = nonzero if loaded resident
  1591.        = 00h if nonresident
  1592. Note:    available only when popped up; should call AX=FFEFh first to ensure
  1593.       that DESKTOP is active
  1594. SeeAlso: AX=FFEFh,AX=FFF3h
  1595. --------U-16FFC6-----------------------------
  1596. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1597.     AX = FFC6h
  1598.     BL = new value for ???
  1599. --------U-16FFC7-----------------------------
  1600. INT 16 U - PC Tools v5.1+ DESKTOP API - REMOVE WINDOW
  1601.     AX = FFC7h
  1602.     ???
  1603. Return: ???
  1604. --------U-16FFC8-----------------------------
  1605. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1606.     AX = FFC8h
  1607. Return: DS:SI -> ???
  1608. Note:    valid only while popped up
  1609. --------U-16FFC9-----------------------------
  1610. INT 16 U - PC Tools v5.1+ DESKTOP API - COPY DATA TO CLIPBOARD
  1611.     AX = FFC9h
  1612.     DS:SI -> characters to store in clipboard
  1613.     CX = size in bytes
  1614. Return: CF set on error
  1615. Notes:    available only when popped up
  1616.     while copying, bytes of 00h and 0Ah are skipped
  1617. --------U-16FFCA-----------------------------
  1618. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1619.     AX = FFCAh
  1620.     DX = ???
  1621. Return: AX destroyed
  1622. Note:    available only when popped up
  1623. --------U-16FFCB-----------------------------
  1624. INT 16 U - PC Tools v5.1+ DESKTOP API - SELECT WINDOW PARAMETERS???
  1625.     AX = FFCBh
  1626.     DX = window specifier???
  1627. Return: AX destroyed
  1628. Note:    available only when popped up
  1629. SeeAlso: AX=FFB5h
  1630. --------U-16FFCC-----------------------------
  1631. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  1632.     AX = FFCCh
  1633.     DS:SI -> ASCIZ string
  1634. Return: AX = ???
  1635.     CX = ???
  1636.     ES:DI -> address past last character displayed (v5.1/5.5)
  1637.           -> ??? on menu bar (v6.0)
  1638. --------U-16FFCD-----------------------------
  1639. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1640.     AX = FFCDh
  1641.     DS:DX -> ???
  1642. Return: ???
  1643. Note:    available only when popped up
  1644. --------U-16FFCE-----------------------------
  1645. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ??? DELAYS
  1646.     AX = FFCEh
  1647.     CX = ???
  1648. Return: nothing???
  1649. --------U-16FFCF-----------------------------
  1650. INT 16 U - PC Tools v5.1+ DESKTOP API - CLOSE PRINTER/PRINT FILE
  1651.     AX = FFCFh
  1652. Note:    available only when popped up
  1653. --------U-16FFD0-----------------------------
  1654. INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO PRINT???
  1655.     AX = FFD0h
  1656.     ???
  1657. Return: ???
  1658. Note:    available only when popped up
  1659. --------U-16FFD1-----------------------------
  1660. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY PRINT OPTIONS MENU
  1661.     AX = FFD1h
  1662. Return: BX = number of copies
  1663.     DX = destination
  1664.         00h cancel
  1665.         01h LPT1
  1666.         02h LPT2
  1667.         03h LPT3
  1668.         04h COM1
  1669.         05h COM2
  1670.         06h disk file
  1671. Note:    available only when popped up
  1672. --------U-16FFD2-----------------------------
  1673. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1674.     AX = FFD2h
  1675.     BX = ???
  1676. Return: BL = ???
  1677. Note:    available only when popped up
  1678. --------U-16FFD3-----------------------------
  1679. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1680.     AX = FFD3h
  1681.     DS:SI -> 92-byte data record for ???
  1682. Return: ???
  1683. SeeAlso: AX=FED3h
  1684. --------U-16FFD4BH3C-------------------------
  1685. INT 16 U - PC Tools v5.1+ DESKTOP API - CREATE/OPEN/DELETE FILE
  1686.     AX = FFD4h
  1687.     BH = 3Ch create file (with no attributes)
  1688.          3Dh open file
  1689.          41h delete file
  1690.     BL = access mode
  1691.          00h read only
  1692.          01h write only
  1693.          02h read/write
  1694.     DS:SI -> ASCIZ filename
  1695. Return: BX = file handle
  1696.         0000h on error
  1697. Note:    operation is attempted in (in order) the directory from which the
  1698.       desktop was started/run???, the directory specified with the
  1699.       filename, X:\PCTOOLS\, and X:\
  1700. --------U-16FFD5-----------------------------
  1701. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1702.     AX = FFD5h
  1703.     ???
  1704. Return: ???
  1705. Note:    available only when popped up
  1706. --------U-16FFD6-----------------------------
  1707. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1708.     AX = FFD6h
  1709.     BX = ???
  1710.     CX = ???
  1711.     DX = offset in ???
  1712.     ???
  1713. Return: ???
  1714. Note:    available only when popped up
  1715. --------U-16FFD7-----------------------------
  1716. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1717.     AX = FFD7h
  1718.     ???
  1719. Return: BL = ???
  1720. Note:    available only when popped up
  1721. --------U-16FFD8-----------------------------
  1722. INT 16 U - PC Tools v5.1+ DESKTOP API - SAFE CREATE FILE
  1723.     AX = FFD8h
  1724.     DS:BX -> ASCIZ filename
  1725. Return: BX = file handle
  1726.         0000h on error
  1727. Note:    pops up confirmation menu if file already exists
  1728.     only available when popped up???
  1729. --------U-16FFD9-----------------------------
  1730. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1731.     AX = FFD9h
  1732. Return: AX = ???
  1733. Note:    available only when popped up
  1734. --------U-16FFDA-----------------------------
  1735. INT 16 U - PC Tools v5.1+ DESKTOP API - GET NAME OF LAST FILE OPENED
  1736.     AX = FFDAh
  1737.     DS:SI -> ??? (v5.1/5.5 only)
  1738. Return: DS:SI -> filename
  1739. --------U-16FFDB-----------------------------
  1740. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1741.     AX = FFDBh
  1742.     BL = ???
  1743. Note:    available only when popped up
  1744. --------U-16FFDC-----------------------------
  1745. INT 16 U - PC Tools v5.1+ DESKTOP API - UNHOOK
  1746.     AX = FFDCh
  1747. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  1748.       original values
  1749. Index:    uninstall;PC Tools DESKTOP
  1750. --------U-16FFDDBX0000-----------------------
  1751. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  1752.     AX = FFDDh
  1753.     BX = 0000h
  1754. Return: CX = 5555h
  1755.     DX = 5555h if PCShell installed in resident mode
  1756. --------U-16FFDDBX0001-----------------------
  1757. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  1758.     AX = FFDDh
  1759.     BX = 0001h
  1760. Return: CF clear if request successful (PCShell will pop up)
  1761.     CF set on error
  1762. SeeAlso: AX=FFDDh/BX=0003h
  1763. --------U-16FFDDBX0002-----------------------
  1764. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  1765.     AX = FFDDh
  1766.     BX = 0002h
  1767. Return: AL =
  1768.         00h ???
  1769.         01h ???
  1770. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  1771.       awaits a keystroke, and aborts the current process
  1772. --------U-16FFDDBX0003-----------------------
  1773. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  1774.     AX = FFDDh
  1775.     BX = 0003h
  1776. SeeAlso: AX=FFDDh/BX=0001h
  1777. --------U-16FFDDBX0004-----------------------
  1778. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  1779.     AX = FFDDh
  1780.     BX = 0004h
  1781. Return: CF clear if successful
  1782.         DS:SI -> ???
  1783. --------U-16FFDDBX0005-----------------------
  1784. INT 16 U - PC Tools v5.1+ PCShell API - ???
  1785.     AX = FFDDh
  1786.     BX = 0005h
  1787.     ???
  1788. Return: ???
  1789. Note:    resets various variables if certain conditions are met
  1790. --------U-16FFDDBX0006-----------------------
  1791. INT 16 U - PC Tools v5.1+ PCShell API - ???
  1792.     AX = FFDDh
  1793.     BX = 0006h
  1794.     ???
  1795. Return: ???
  1796. Note:    resets various variables if certain conditions are met
  1797. --------U-16FFDDBX0007-----------------------
  1798. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  1799.     AX = FFDDh
  1800.     BX = 0007h
  1801. Return: CF clear if successful
  1802. SeeAlso: AX=FFDDh/BX=0008h
  1803. --------U-16FFDDBX0008-----------------------
  1804. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  1805.     AX = FFDDh
  1806.     BX = 0008h
  1807. Return: CF undefined
  1808. SeeAlso: AX=FFDDh/BX=0007h
  1809. --------U-16FFDDBX0009-----------------------
  1810. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  1811.     AX = FFDDh
  1812.     BX = 0009h
  1813. Return: CF clear if successful
  1814.         DS:SI -> list of pointers (see below)
  1815.  
  1816. Format of returned pointer list:
  1817. Offset    Size    Description
  1818.  00h    WORD    offset of WORD containing ???
  1819.  02h    WORD    offset of name of program to execute
  1820.  04h    WORD    offset of 80-byte buffer for ???
  1821.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  1822.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  1823. --------U-16FFDDBX000A-----------------------
  1824. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  1825.     AX = FFDDh
  1826.     BX = 000Ah
  1827. Return: CX = 5555h if running
  1828.     DX = 5555h
  1829. Note:    also sets a flag
  1830. --------U-16FFDDBX000B-----------------------
  1831. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  1832.     AX = FFDDh
  1833.     BX = 000Bh
  1834.     ???
  1835. Return: CX = 5555h if PCRUN active
  1836.     DX = 5555h
  1837. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  1838. --------U-16FFDE-----------------------------
  1839. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY POPUP MENU
  1840.     AX = FFDEh
  1841.     DS:DX -> menu description (must be on a paragraph boundary)
  1842. Return: AX = ???
  1843.         AL seems to be the number of the selected button
  1844. Note:    available only when popped up
  1845. SeeAlso: AX=FFEEh
  1846. --------U-16FFDF-----------------------------
  1847. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1848.     AX = FFDFh
  1849.     ???
  1850. Return: ???
  1851. --------U-16FFE0-----------------------------
  1852. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1853.     AX = FFE0h
  1854.     CX = ???
  1855.     DX = ???
  1856. Note:    available only when popped up
  1857. --------U-16FFE1-----------------------------
  1858. INT 16 U - PC Tools v5.1+ DESKTOP API - BEEP
  1859.     AX = FFE1h
  1860. --------U-16FFE2-----------------------------
  1861. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1862.     AX = FFE2h
  1863.     DX = ???
  1864. Return: ???
  1865. Note:    available only when popped up
  1866. --------U-16FFE3-----------------------------
  1867. INT 16 U - PC Tools v5.1+ DESKTOP API - PRINT CHARACTER
  1868.     AX = FFE3h
  1869.     BL = character to print to currently open printer or print file
  1870. Return: CF set on error
  1871. Note:    available only when popped up
  1872. SeeAlso: INT 17/AH=00h
  1873. --------U-16FFE4-----------------------------
  1874. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1875.     AX = FFE4h
  1876.     DX = segment of ???
  1877. Return: ???
  1878. Note:    available only when popped up
  1879. --------U-16FFE5-----------------------------
  1880. INT 16 U - PC Tools v5.1+ DESKTOP API - POP UP FILE SELECTION MENU
  1881.     AX = FFE5h
  1882.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  1883.     DX = segment of window parameters???
  1884. Return: AX = DOS file handle for file
  1885.         DS:DX -> filename???
  1886.        = FFFFh if cancelled by user
  1887. Note:    available only when popped up
  1888. SeeAlso: AX=FFDAh
  1889. --------U-16FFE6-----------------------------
  1890. INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK FOR AND GET KEYSTROKE
  1891.     AX = FFE6h
  1892. Return: AX = 0000h if no key available
  1893.          else  BIOS keycode
  1894. Notes:    available only when popped up
  1895.     invokes INT 28 idle interrupt before checking for key
  1896. --------U-16FFE7-----------------------------
  1897. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1898.     AX = FFE7h
  1899.     BX = segment of ???
  1900. Return: ???
  1901. Note:    available only when popped up
  1902. --------U-16FFE8-----------------------------
  1903. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY NUMBER
  1904.     AX = FFE8h
  1905.     CX = number
  1906.     DH = attribute
  1907.     DS:SI -> destination for ASCII number
  1908. Return: DS:SI buffer filled in with alternating characters and attributes
  1909. --------U-16FFE9-----------------------------
  1910. INT 16 U - PC Tools v5.1+ DESKTOP API - GET FILE LIST???
  1911.     AX = FFE9h
  1912. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  1913. Note:    available only when popped up
  1914. --------U-16FFEA-----------------------------
  1915. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY COUNTED STRING
  1916.     AX = FFEAh
  1917.     DS:SI -> counted string (count byte followed by string)
  1918. Return: ???
  1919. Note:    available only when popped up
  1920. --------U-16FFEB-----------------------------
  1921. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1922.     AX = FFEBh
  1923.     ???
  1924. Return: ???
  1925. --------U-16FFEC-----------------------------
  1926. INT 16 U - PC Tools v5.1+ DESKTOP API - GET KEY
  1927.     AX = FFECh
  1928.     DS:SI -> FAR routine to ???
  1929.     BX = ???
  1930.     ???
  1931. Return: AX = keystroke
  1932.         FFFFh if F10 pressed to go to menu
  1933. Notes:    available only when popped up
  1934.     invokes INT 28 while waiting for keystroke
  1935.     F10 is hotkey to Desktop menu
  1936. Index:    hotkeys;PC Tools DESKTOP
  1937. --------U-16FFED-----------------------------
  1938. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1939.     AX = FFEDh
  1940. Return: AX = ???
  1941. Note:    available only when popped up
  1942. --------U-16FFEE-----------------------------
  1943. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE PULLDOWN MENUS
  1944.     AX = FFEEh
  1945.     DS:SI -> pulldown menu system description (see below)
  1946. Return: AX destroyed
  1947. Notes:    available only when popped up
  1948.     if the accessory does not need any menu items of its own, it should
  1949.       call AX=FFFAh instead
  1950. SeeAlso: AX=FFF7h,AX=FFFAh
  1951.  
  1952. Format of pulldown menu system description:
  1953. Offset    Size    Description
  1954.  00h    WORD    offset of menu bar contents (counted string)
  1955.  02h    WORD    number of items on menu bar
  1956.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  1957.  0Eh 10 BYTEs    which character to highlight in each menu item (01h=first)
  1958.  18h    WORD    offset of first menu definition (see below)
  1959.  1Ah    WORD    offset of second menu definition
  1960.     ...
  1961.  
  1962. Format of menu definition:
  1963. Offset    Size    Description
  1964.  00h    WORD    offset of menu contents (see below)
  1965.  02h    WORD    number of entries in menu
  1966.  04h    for each entry:
  1967.         Offset    Size    Description
  1968.          00h    BYTE    scancode of Alt-key to invoke entry
  1969.          01h    BYTE    character to highlight (01h=first, etc)
  1970.          02h    WORD    offset of FAR routine to handle selection
  1971.  
  1972. Format of menu contents:
  1973. Offset    Size    Description
  1974.  00h    BYTE    number of lines in menu
  1975.  01h    BYTE    width of menu
  1976.  02h  N BYTEs    counted strings, one for each line in menu
  1977. --------U-16FFEFCX0000-----------------------
  1978. INT 16 U - PC Tools v5.1+ DESKTOP API - INSTALLATION CHECK
  1979.     AX = FFEFh
  1980.     CX = 0000h
  1981. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  1982.         BX = segment of resident portion
  1983.         AX = ??? (v5.1/5.5 only)
  1984. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  1985. --------U-16FFF0-----------------------------
  1986. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1987.     AX = FFF0h
  1988.     DX = ???
  1989. Return: AX destroyed
  1990. Note:    available only when popped up
  1991. --------U-16FFF1BX0000-----------------------
  1992. INT 16 U - PC Tools v5.1+ DESKTOP API - ALTERNATE INSTALLATION CHECK
  1993.     AX = FFF1h
  1994.     BX = 0000h  leave ??? flag as is
  1995.         nonzero set ??? flag
  1996. Return: CX = 5555h if installed
  1997.     DX = 5555h
  1998. --------U-16FFF2-----------------------------
  1999. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY HELP LINE
  2000.     AX = FFF2h
  2001.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  2002.         or help text
  2003. Return: AX destroyed
  2004. Notes:    available only when popped up
  2005.     if the specified string does not start with '[', it is displayed
  2006.       centered on the bottom line, else the function key labels are shown
  2007. --------U-16FFF3-----------------------------
  2008. INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO UNLOAD RESIDENT DESKTOP
  2009.     AX = FFF3h
  2010. Note:    releases any EMS being used; restores video mode, page, and cursor
  2011.       shape; and restores interrupt vectors
  2012. SeeAlso: AX=FFC5h,AX=FFEFh
  2013. Index:    uninstall;PC Tools DESKTOP
  2014. --------U-16FFF4-----------------------------
  2015. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  2016.     AX = FFF4h
  2017.     ???
  2018. Return: ???
  2019. Note:    available only when popped up
  2020. SeeAlso: AX=FFF6h
  2021. --------U-16FFF5-----------------------------
  2022. INT 16 U - PC Tools v5.1+ DESKTOP API - GET SCREEN ATTRIBUTE ARRAY
  2023.     AX = FFF5h
  2024. Return: ES:BX -> screen attributes data structure (see below)
  2025.     AL = ??? (v6.0+)
  2026.  
  2027. Format of attribute data structure:
  2028. Offset    Size    Description
  2029.  -1    BYTE    attribute for desktop background
  2030.  00h    BYTE    attribute for normal characters on desktop menu
  2031.  01h    BYTE    attribute for highlighted characters on desktop menu
  2032.  02h  5 BYTEs    ???
  2033.  07h    BYTE    attribute for dialog boxes
  2034.  08h 15 BYTEs    ???
  2035.  17h    BYTE    attribute for message boxes
  2036. --------U-16FFF6-----------------------------
  2037. INT 16 U - PC Tools v5.1+ DESKTOP API - INVOKE NOTEPAD EDITOR
  2038.     AX = FFF6h
  2039.     DS = segment of editor buffer structure (see below)
  2040.     BX = ???
  2041.     DX = segment of window parameters structure (see AX=FFB5h)
  2042. Return: ???
  2043. Note:    available only when popped up
  2044. SeeAlso: AX=FFF4h
  2045.  
  2046. Format of editor buffer structure:
  2047. Offset    Size    Description
  2048.  00h    WORD    offset of current cursor position in buffer segment
  2049.  02h  2 BYTEs    ???
  2050.  04h    WORD    offset of beginning of file data in buffer segment
  2051.  06h 10 BYTEs    ???
  2052.  10h  N BYTEs    ASCIZ name of file being edited
  2053. --------U-16FFF7-----------------------------
  2054. INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS MENU BAR ENTRY???
  2055.     AX = FFF7h
  2056.     DS:SI -> ???
  2057.     ???
  2058. Return: ???
  2059. Notes:    available only when popped up
  2060.     performs input processing on the menu bar set up with AX=FFEEh
  2061. SeeAlso: AX=FFEEh,AX=FFFBh
  2062. --------U-16FFF8-----------------------------
  2063. INT 16 U - PC Tools v5.1+ DESKTOP API - DRAW EMPTY WINDOW
  2064.     AX = FFF8h
  2065.     DS:0000h -> window parameters structure (see AX=FFB5h)
  2066.     DS:BX -> DWORD to store address of ??? on screen
  2067. Return: ???
  2068. --------U-16FFF9-----------------------------
  2069. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE SCREEN REFRESH ROUTINE
  2070.     AX = FFF9h
  2071.     ES:BX -> FAR routine to redisplay the utility's window
  2072. Note:    available only when popped up
  2073. --------U-16FFFA-----------------------------
  2074. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE STANDARD PULLDOWN MENUS
  2075.     AX = FFFAh
  2076. Notes:    available only when popped up
  2077.     adds the "Window" option to the "Desktop" option which is the only one
  2078.       available when no accessories are active.  Unlike AX=FFEEh, no
  2079.       additional menu items are added between "Desktop" and "Window"
  2080. SeeAlso: AX=FFEEh,AX=FFFBh
  2081. --------U-16FFFB-----------------------------
  2082. INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS STANDARD MENU BAR
  2083.     AX = FFFBh
  2084. Return: ???
  2085. Notes:    available only when popped up
  2086.     performs input processing on the standard menu bar set up with AX=FFFAh
  2087. SeeAlso: AX=FFF7h
  2088. --------U-16FFFC-----------------------------
  2089. INT 16 U - PC Tools v5.1+ DESKTOP API - GET HOTKEYS AND KEYBOARD VECTOR
  2090.     AX = FFFCh
  2091. Return: ES:BX -> hotkey table (see below)
  2092.     DS:DX = original INT 09 vector
  2093.  
  2094. Format of hotkey table:
  2095. Offset    Size    Description
  2096.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  2097.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  2098.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  2099.  06h  2 BYTEs    scancode/shift state for screen autodial key
  2100. --------U-16FFFD-----------------------------
  2101. INT 16 U - PC Tools v5.1+ DESKTOP API - COPY ???
  2102.     AX = FFFDh
  2103. Return: AX destroyed
  2104. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  2105. SeeAlso: AX=FF91h,AX=FF92h
  2106. --------M-16FFFE-----------------------------
  2107. INT 16 U - PC Tools v5.1+ DESKTOP API - SHOW MOUSE CURSOR
  2108.     AX = FFFEh
  2109. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  2110. --------M-16FFFF-----------------------------
  2111. INT 16 U - PC Tools v5.1+ DESKTOP API - HIDE MOUSE CURSOR
  2112.     AX = FFFFh
  2113. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  2114. --------P-17----DX0ABC-----------------------
  2115. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  2116.     DX = 0ABCh
  2117. Return: AX = AAAAh
  2118.     DX = BAAAh
  2119.     ES = code segment of resident portion
  2120. --------P-17----DX0B90-----------------------
  2121. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  2122.     DX = 0B90h
  2123. Return: DX = ABBBh
  2124.     ES = code segment of resident portion
  2125. --------P-17----DX0B91-----------------------
  2126. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  2127.     DX = 0B91h
  2128. Return: DX = ABCBh
  2129.     ES = code segment of resident portion
  2130. --------P-17----DX0F5F-----------------------
  2131. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  2132.     DX = 0F5Fh
  2133. Return: AX = AAAAh
  2134.     DX = F555h
  2135.     ES = code segment of resident portion
  2136. --------B-1700-------------------------------
  2137. INT 17 - PRINTER - WRITE CHARACTER
  2138.     AH = 00h
  2139.     AL = character to write
  2140.     DX = printer number (00h-02h)
  2141. Return: AH = printer status (see below)
  2142. SeeAlso: AH=02h,AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  2143.  
  2144. Bitfields for printer status:
  2145.  bit 7    not busy
  2146.  bit 6    acknowledge
  2147.  bit 5    out of paper
  2148.  bit 4    selected
  2149.  bit 3    I/O error
  2150.  bits 2,1 unused
  2151.  bit 0    timeout
  2152. --------B-1701-------------------------------
  2153. INT 17 - PRINTER - INITIALIZE PORT
  2154.     AH = 01h
  2155.     DX = printer number (00h-02h)
  2156. Return: AH = printer status (see AH=00h)
  2157. Note:    some printers report that they are ready immediately after
  2158.       initialization when they actually are not; a more reliable result may
  2159.       be obtained by calling AH=02h after a brief delay
  2160. SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC"
  2161. --------B-1702-------------------------------
  2162. INT 17 - PRINTER - GET STATUS
  2163.     AH = 02h
  2164.     DX = printer number (00h-02h)
  2165. Return: AH = printer status (see AH=00h)
  2166. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  2167. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
  2168. --------P-1702--DX0000-----------------------
  2169. INT 17 - INSET - INSTALLATION CHECK
  2170.     AH = 02h
  2171.     DX = 0000h
  2172.     CX = 07C3h (1987d)
  2173. Return: CX = 07C2h (1986d) if installed
  2174. Program: INSET is a text/graphics integration program
  2175. --------P-1703-------------------------------
  2176. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  2177.     AH = 03h
  2178. Return: BX = ???
  2179.     CX = ???
  2180. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  2181.       Vertisoft Systems, Inc.
  2182. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
  2183. --------c-1703-------------------------------
  2184. INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
  2185.     AH = 03h
  2186.     DX = printer port number
  2187.     CX = number of characters to print
  2188.     DS:SI -> string
  2189. Return: AH = printer status (see AH=00h)
  2190.     CX = number of characters actually printed
  2191. Desc:    send an entire string of chars to the print spooler with a single call
  2192. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  2193.       operating system by The Software Link, Inc.
  2194. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
  2195. --------P-1704-------------------------------
  2196. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  2197.     AH = 04h
  2198. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  2199. SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
  2200. --------P-170500-----------------------------
  2201. INT 17 U - Emulaser ELTSR - ???
  2202.     AX = 0500h
  2203.     ???
  2204. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  2205.     BX = ???
  2206.     CX = PSP segment of ELTSR
  2207.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  2208.     SI = ???
  2209.     DI = ???
  2210. SeeAlso: AH=04h,INT 1A/AH=E5h
  2211. --------P-170501-----------------------------
  2212. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  2213.     AX = 0501h
  2214. Return: (see AX=0500h)
  2215. Note:    restores interrupt vectors without checking whether they have been
  2216.       hooked by later programs; should only be called if ELTSR reports
  2217.       that it is safe to unload
  2218. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  2219. Index:    uninstall;Emulaser ELTSR
  2220. --------P-170502-----------------------------
  2221. INT 17 U - Emulaser ELTSR - SET ???
  2222.     AX = 0502h
  2223.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  2224.     CL = ???
  2225.     DL = ???
  2226. Return: (see AX=0500h)
  2227. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  2228. --------P-170503-----------------------------
  2229. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  2230.     AX = 0503h
  2231. Return: (see AX=0500h)
  2232. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  2233. --------P-1706-------------------------------
  2234. INT 17 U - Emulaser ELTSR - ???
  2235.     AH = 06h
  2236.     ???
  2237. Return: ???
  2238. SeeAlso: AH=05h,INT 1A/AH=E5h
  2239. --------P-1707-------------------------------
  2240. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  2241.     AH = 07h
  2242.     ES:DX -> ASCIZ filename to be opened
  2243. Return: ???
  2244. Note:    new output will be appended to the specified file
  2245. SeeAlso: AH=08h,INT 1A/AH=E5h
  2246. --------P-1708-------------------------------
  2247. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  2248.     AH = 08h
  2249.     ???
  2250. Return: ???
  2251. Desc:    close the file previously opened by function 07h
  2252. SeeAlso: AH=07h,INT 1A/AH=E5h
  2253. --------P-1709-------------------------------
  2254. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  2255.     AH = 09h
  2256.     BX = ???
  2257.     CX = ???
  2258.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2259. Return: AX = status
  2260.         00h successful
  2261.         FFh failed
  2262. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  2263.       Vertisoft Systems, Inc.
  2264. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  2265.       that either ELSPL or Disk Spool II be installed
  2266. SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
  2267. --------P-170A-------------------------------
  2268. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  2269.     AH = 0Ah
  2270.     ES:BX -> ??? buffer
  2271.     CX = length of ??? buffer
  2272. Return: ???
  2273. Note:    copies the specified name into the buffer passed to ELSPL as the
  2274.       filename by AH=09h
  2275. SeeAlso: AH=09h,INT 1A/AH=E5h
  2276. --------P-170B-------------------------------
  2277. INT 17 U - Emulaser ELTSR - GET ???
  2278.     AH = 0Bh
  2279. Return: AX:BX -> ???
  2280. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  2281. --------P-170C-------------------------------
  2282. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  2283.     AH = 0Ch
  2284.     ???
  2285. Return: ???
  2286. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  2287. --------P-170D-------------------------------
  2288. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  2289.     AH = 0Dh
  2290. Return: AX = state (0000h off, 0010h on)
  2291. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  2292.       the ScrlLk light as its activity indicator
  2293. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  2294. --------P-170E-------------------------------
  2295. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  2296.     AH = 0Eh
  2297. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  2298.       Vertisoft Systems, Inc.
  2299. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  2300.       processed in the background, but may also be called by applications
  2301.       to give Emulaser additional CPU time
  2302. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  2303. --------P-172000-----------------------------
  2304. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
  2305.     AX = 2000h
  2306.     BL = printer number???
  2307. Return:    AX = status (see below)
  2308.     BX = driver version number (BH=major,BL=minor)
  2309.     CH = ??? (00h)
  2310.     CL = ???
  2311.     DX = ??? (0100h)
  2312. Note:    also enables the remaining printer driver functions (2001h-2007h)
  2313. SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
  2314.  
  2315. Values for status:
  2316.  0000h    successful
  2317.  0001h    invalid printer???
  2318.  0002h    ???
  2319.  0003h    invalid subfunction
  2320.  0005h    driver disabled, must call function 00h first
  2321.  0009h    unknown printer error
  2322.  000Bh    printer not selected
  2323.  000Ch    printer out of paper
  2324.  000Eh    error while writing to serial printer
  2325.  000Fh    ???
  2326.  0010h    invalid function number
  2327.  0011h    value out of range
  2328. --------P-172001-----------------------------
  2329. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
  2330.     AX = 2001h
  2331.     BL = printer number???
  2332. Return: AX = status (see AX=2000h)
  2333. --------P-172002-----------------------------
  2334. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
  2335.     AX = 2002h
  2336.     BL = printer number???
  2337.     CL = desired information
  2338.         00h printer type
  2339.         Return: ES:DI -> ASCIZ printer name
  2340.         01h paper size
  2341.         DX = size index
  2342.         Return: ES:DI -> ASCIZ paper size description
  2343.         02h ???
  2344.         Return: BX = ???
  2345.         03h printer information???
  2346.         DX = ???
  2347.         ES:BX -> buffer for ??? (min 134 bytes)
  2348. Return: AX = status (see AX=2000h)
  2349. SeeAlso: AX=2000h,AX=2004h
  2350. --------P-172003-----------------------------
  2351. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
  2352.     AX = 2003h
  2353.     ES:BX -> ???
  2354. Return: AX = status (see AX=2000h)
  2355. SeeAlso: AX=2000h,AX=2004h
  2356. --------P-172004-----------------------------
  2357. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
  2358.     AX = 2004h
  2359.     BL = printer number???
  2360. Return: AX = status (see AX=2000h)
  2361.     ES:DI -> ???
  2362. SeeAlso: AX=2000h,AX=2003h
  2363. --------P-172005-----------------------------
  2364. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
  2365.     AX = 2005h
  2366.     BL = printer number???
  2367. Return: AX = status (see AX=2000h)
  2368. Note:    this function also clears the flag set by AX=2001h
  2369. SeeAlso: AX=2000h,AX=2001h,AX=2006h
  2370. --------P-172006-----------------------------
  2371. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
  2372.     AX = 2006h
  2373.     BL = printer number???
  2374. Return: AX = status (see AX=2000h)
  2375. Note:    this function also clears the flag set by AX=2001h and disables
  2376.       functions other than AX=2000h
  2377. SeeAlso: AX=2000h,AX=2001h,AX=2005h
  2378. --------P-172007-----------------------------
  2379. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
  2380.     AX = 2007h
  2381. Return: AX unchanged
  2382. SeeAlso: AX=2000h
  2383. --------N-172400-----------------------------
  2384. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  2385.     AX = 2400h
  2386.     DL = new state
  2387.         00h disabled
  2388.         01h enabled
  2389. Return: DL = 24h if installed
  2390.     DH = minor version number
  2391.     CX = network address of this machine
  2392.     AL = status
  2393.         00h successful
  2394.         01h timeout
  2395.         02h header error
  2396.         03h data error
  2397.         04h busy
  2398.         05h invalid parameters
  2399. SeeAlso: AX=2403h,INT 16/AX=4500h
  2400. --------N-172401-----------------------------
  2401. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  2402.     AX = 2401h
  2403.     BL = timeout in clock ticks
  2404. Return: AL = status (see AX=2400h)
  2405.     DX:BX -> receive buffer
  2406. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  2407. --------N-172402-----------------------------
  2408. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  2409.     AX = 2402h
  2410.     transmit buffer filled (see AX=2403h)
  2411. Return: AL = status (see AX=2400h)
  2412. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  2413. --------N-172403-----------------------------
  2414. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  2415.     AX = 2403h
  2416. Return: AL = status (see AX=2400h)
  2417.     CX = number of characters in receive ring buffer
  2418.     DX:BX -> transmit buffer
  2419. SeeAlso: AX=2400h,AX=2402h
  2420. --------N-172404-----------------------------
  2421. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  2422.     AX = 2404h
  2423.     BX = target address
  2424. Return: AL = status (see AX=2400h)
  2425. SeeAlso: AX=2402h,AX=2405h
  2426. --------N-172405-----------------------------
  2427. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  2428.     AX = 2405h
  2429.     BX = target address
  2430. Return: AL = status (see AX=2400h)
  2431. SeeAlso: AX=2402h,AX=2404h
  2432. --------N-172406-----------------------------
  2433. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  2434.     AX = 2406h
  2435. Return: AL = status (see AX=2400h)
  2436. SeeAlso: AX=2407h,AX=240Ah
  2437. --------N-172407-----------------------------
  2438. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  2439.     AX = 2407h
  2440. Return: AL = status (see also AX=2400h)
  2441.         06h end of data
  2442.     DL = received character
  2443. SeeAlso: AX=2406h
  2444. --------N-172408-----------------------------
  2445. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  2446.     AX = 2408h
  2447. Return: AL = status (see also AX=2400h)
  2448.         06h end of data
  2449.     CX = number of bytes in receive buffer
  2450.     DX:SI -> receive buffer
  2451. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  2452. --------N-172409-----------------------------
  2453. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  2454.     AX = 2409h
  2455.     BX = target address
  2456.     CX = number of data bytes
  2457.     DL = command code to send
  2458.     DS:SI -> data bytes for command
  2459. Return: AL = status (see also AX=2400h)
  2460.         03h no response
  2461.         06h remote currently unable to perform command
  2462. SeeAlso: AX=2405h,AX=2408h
  2463. --------N-17240A-----------------------------
  2464. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  2465.     AX = 240Ah
  2466. Return: AL = status (see AX=2400h)
  2467. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  2468. --------N-17240B-----------------------------
  2469. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  2470.     AX = 240Bh
  2471.     DL = character to send
  2472. Return: AL = status (see also AX=2400h)
  2473.         03h transmission error
  2474.         06h write error
  2475. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  2476. --------N-17240C-----------------------------
  2477. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  2478.     AX = 240Ch
  2479. Return: AL = status (see also AX=2400h)
  2480.         03h transmission error
  2481.         06h remote breaks connection
  2482. SeeAlso: AX=240Ah,AX=240Bh
  2483. --------J-175000-----------------------------
  2484. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  2485.     AX = 5000h
  2486.     BX = country code
  2487.         0001h USA (English), 0051h Japan
  2488. Return: AL = status
  2489.         00h successful
  2490.         01h bad country code
  2491.         02h other error
  2492. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  2493. --------J-175001-----------------------------
  2494. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  2495.     AX = 5001h
  2496. Return: AL = status
  2497.         00h successful
  2498.         BX = country code
  2499.         02h error
  2500. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  2501. --------J-1751-------------------------------
  2502. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  2503.     AH = 51h
  2504.     DX = 2-byte JIS code
  2505. Return: DX = shift-JIS value or 0000h on error
  2506. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  2507.       characters to Shift-JIS characters, and the other performs the
  2508.       opposite conversion
  2509. SeeAlso: AX=5000h,AH=52h
  2510. --------J-1752-------------------------------
  2511. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  2512.     AH = 52h
  2513.     DX = 2-byte shift-JIS code
  2514. Return: DX = JIS code or 0000h on error
  2515. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  2516.       characters to Shift-JIS characters, and the other performs the
  2517.       opposite conversion
  2518. SeeAlso: AH=51h
  2519. --------V-1760-------------------------------
  2520. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  2521.     AH = 60h
  2522. Return: AL = 60h
  2523.     DX = CS of resident code
  2524. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  2525.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  2526.       consisting of an 80h followed by the actual command
  2527. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  2528. --------V-1761-------------------------------
  2529. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  2530.     AH = 61h
  2531. Return: AL = 61h
  2532.     DX = CS of resident code
  2533. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  2534. --------P-1762-------------------------------
  2535. INT 17 U - T2PS v1.0 - UNINSTALL
  2536.     AH = 62h
  2537. Return: nothing
  2538. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  2539. --------P-1763-------------------------------
  2540. INT 17 U - T2PS v1.0 - SET PARAMETERS
  2541.     AH = 63h
  2542.     ES:SI -> settings (see below)
  2543. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  2544.       Technologies
  2545. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  2546.  
  2547. Format of settings:
  2548. Offset    Size    Description
  2549.  00h    WORD    LPT port number (0=LPT1, etc.)
  2550.  02h    WORD    page heigh in points
  2551.  04h    WORD    page width in points
  2552.  06h    WORD    top margin in points
  2553.  08h    WORD    bottom margin in points
  2554.  0Ah    WORD    left margin in points
  2555.  0Ch    WORD    right margin in points
  2556.  0Eh    WORD    font size in points
  2557.  10h    WORD    tab size
  2558.  12h    WORD    timeout in clock ticks
  2559. --------P-1764-------------------------------
  2560. INT 17 U - T2PS v1.0 - GET PARAMETERS
  2561.     AH = 64h
  2562.     ES:SI -> buffer for settings (see AH=63h)
  2563. Return: ES:SI buffer filled
  2564. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  2565. --------N-1781-------------------------------
  2566. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  2567.     AH = 81h
  2568.     AL = 00h (NTNX compatibility mode)
  2569.     CL = number of jobs to cancel
  2570. Return: AL = status
  2571.         00h success
  2572.         01h..7Fh warning
  2573.         80h general failure
  2574.         81h host overloaded (NTNX only)
  2575.         82h module busy (NTNX only)
  2576.         83h host busy (NTNX only)
  2577.         84h re-entry flag set
  2578.         85h invalid request
  2579.         86h invalid printer
  2580.         87h invalid process ID
  2581.         89h access denied
  2582.         8Ah option not available for given port type
  2583.         8Bh option not available for given task type
  2584.         91h printer busy
  2585.         C2h file not found
  2586.         C3h path not found
  2587.         C4h file access failure
  2588. Note:    cancels the last CL printouts for the current task
  2589. SeeAlso: AH=82h
  2590. --------N-1782-------------------------------
  2591. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  2592.     AH = 82h
  2593.     AL = 00h (NTNX compatibility mode)
  2594. Return: AL = status (see AH=81h)
  2595. SeeAlso: AH=81h
  2596. --------N-1783-------------------------------
  2597. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  2598.     AH = 83h
  2599.     AL = mode
  2600.         00h NTNX compatibility
  2601.         CL = number of copies (max 99, default 1)
  2602.         02h MW386 v2+
  2603.         BX = logical device number
  2604.             00h-03h = LPT1-LPT4
  2605.             04h-07h = COM1-COM4
  2606.         CX = number of copies
  2607. Return: AL = status (see AH=81h)
  2608. Note:    in NTNX compatibility mode, this function only affects LPT1
  2609. --------N-1784-------------------------------
  2610. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  2611.     AH = 84h
  2612.     AL = mode
  2613.         00h NTNX compatibility
  2614.         02h MW386 v2+
  2615.         BX = logical device number
  2616.             00h-03h = LPT1-LPT4
  2617.             04h-07h = COM1-COM4
  2618. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  2619.       under MW386 in NTNX compatibility mode)
  2620. --------J-1784-------------------------------
  2621. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  2622.     AH = 84h
  2623.     AL = character
  2624.     DX = printer number
  2625. Return: AH = printer status (see AH=00h)
  2626. SeeAlso: AH=00h,AH=85h
  2627. --------J-1785-------------------------------
  2628. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  2629.     AH = 85h
  2630.     AL = new state (00h enabled, 01h disabled)
  2631. SeeAlso: AH=84h"AX"
  2632. --------N-1787-------------------------------
  2633. INT 17 - Alloy NTNX - SET INDOS POINTER
  2634.     AH = 87h
  2635.     AL = 00h
  2636.     CX:BX -> buffer for user-written printer drivers
  2637. Return: BX,CX destroyed
  2638. Note:    must be executed before the printer is enabled
  2639. SeeAlso: AH=8Ah
  2640. --------N-1788-------------------------------
  2641. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  2642.     AH = 88h
  2643.     AL = mode
  2644.         00h NTNX compatibility
  2645.         DX = NTNX printer number
  2646.             00h host LPT1
  2647.             01h host LPT2
  2648.             02h host LPT3
  2649.             03h host LPT4
  2650.             04h host COM1
  2651.             05h host COM2
  2652.             06h user's logical COM2
  2653.             07h user's terminal AUX port
  2654.             08h user's logical COM1 (MW386 only)
  2655.         01h MW386
  2656.         DX = MW386 printer number
  2657. Return: AH = status (see AH=81h)
  2658. Note:    removes specified printer from the spooler's list of printers
  2659. SeeAlso: AH=89h,AH=8Bh
  2660. --------N-1789-------------------------------
  2661. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  2662.     AH = 89h
  2663.     AL = mode
  2664.         00h NTNX compatibility
  2665.         DX = NTNX printer number (see AH=88h)
  2666.         01h MW386
  2667.         DX = MW386 printer number
  2668. Return: AL = status (see AH=81h)
  2669. Note:    the specified printer is added to the spooler's list of available
  2670.       printers
  2671. SeeAlso: AH=88h,AH=8Bh
  2672. --------N-178A-------------------------------
  2673. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  2674.     AH = 8Ah
  2675.     ???
  2676. SeeAlso: AH=92h
  2677. --------N-178B-------------------------------
  2678. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  2679.     AH = 8Bh
  2680.     DS:DX -> ASCIZ printer name
  2681. Return: AL = status (see also AH=81h)
  2682.         00h successful
  2683.         DX = physical device number
  2684. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  2685. --------N-178C-------------------------------
  2686. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  2687.     AH = 8Ch
  2688.     DX = physical device number
  2689.     ES:DI -> 17-byte buffer for ASCIZ device name
  2690. Return: AL = status (see also AH=81h)
  2691.         00h successful
  2692.         ES:DI buffer filled
  2693. SeeAlso: AH=88h,AH=8Bh
  2694. --------N-178D-------------------------------
  2695. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  2696.     AH = 8Dh
  2697.     AL = 00h
  2698. Notes:    clears all buffers and resets spooler to boot-up values
  2699.     MW386 supports this function for compatibility only; it is a NOP
  2700. Return: AL = status (see AH=81h)
  2701. --------N-178E-------------------------------
  2702. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  2703.     AH = 8Eh
  2704.     AL = 00h
  2705. Return: CX:BX -> INT 28 entry point
  2706. SeeAlso: AH=8Fh
  2707. --------N-178F-------------------------------
  2708. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  2709.     AH = 8Fh
  2710.     AL = 00h
  2711. Return: CX:BX -> DOS intercept routine
  2712. SeeAlso: AH=8Eh
  2713. --------N-1790-------------------------------
  2714. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  2715.     AH = 90h
  2716.     AL = mode
  2717.         00h NTNX compatibility
  2718.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  2719.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  2720.         02h MW386 v2+
  2721.         BX = logical device number
  2722.             00h-03h = LPT1-LPT4
  2723.             04h-07h = COM1-COM4
  2724.     CX:SI -> ASCIZ pathname
  2725. Return: AL = status (see AH=81h)
  2726. Note:    in mode 00h, the file is always sent to logical LPT1
  2727. SeeAlso: AH=A0h
  2728. --------N-1791-------------------------------
  2729. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  2730.     AH = 91h
  2731.     AL = mode
  2732.         00h NTNX compatibility
  2733.         Return: CX = user number (00h = host)
  2734.             DX = currently selected printer number (00h-08h)
  2735.         01h MW386
  2736.         Return: CX = user number
  2737.             DX = physical dev number of currently selected printer
  2738.         02h MW386 v2+
  2739.         BX = logical device number
  2740.             00h-03h = LPT1-LPT4
  2741.             04h-07h = COM1-COM4
  2742.         Return: CX = user number
  2743.             DX = physical device number
  2744. Return: AL = status (see AH=81h)
  2745. SeeAlso: AH=8Ch
  2746. --------N-1792-------------------------------
  2747. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  2748.     AH = 92h
  2749.     AL = 00h
  2750.     CL = 00h
  2751. Return: CL = driver state
  2752.         01h initialized
  2753.         80h not initialized
  2754.     AX = status (see AH=81h)
  2755. SeeAlso: AH=8Ah
  2756. --------N-1794-------------------------------
  2757. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  2758.     AH = 94h
  2759.     AL = mode
  2760.         00h NTNX compatibility
  2761.         DX = NTNX printer number (see AH=88h)
  2762.         01h MW386
  2763.         DX = MW386 printer number
  2764.         02h MW386 v2+
  2765.         BX = logical printer number
  2766.         DX = MW386 printer number
  2767. Return: AL = status (see AH=81h)
  2768. Note:    modes 00h and 01h affect only logical LPT1
  2769. SeeAlso: AH=8Bh,AH=95h
  2770. --------N-1795-------------------------------
  2771. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  2772.     AH = 95h
  2773.     AL = mode
  2774.         00h NTNX compatibility
  2775.         Return: DX = NTNX printer number (see AH=88h)
  2776.                 (FFFFh if current printer not compatible with NTNX)
  2777.         01h MW386
  2778.         Return: DX = MW386 printer number
  2779.         02h MW386 v2+
  2780.         BX = logical device number
  2781.             00h-03h = LPT1-LPT4
  2782.             04h-07h = COM1-COM4
  2783.         Return: DX = MW386 printer number (FFFFh = none)
  2784. Return: AL = status (see AH=81h)
  2785. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  2786. SeeAlso: AH=94h
  2787. --------N-1796-------------------------------
  2788. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  2789.     AH = 96h
  2790.     AL = 00h
  2791. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  2792.       returning
  2793. SeeAlso: INT 14/AH=24h
  2794. --------N-1797-------------------------------
  2795. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  2796.     AH = 97h
  2797.     AL = mode
  2798.         00h NTNX compatibility
  2799.         02h MW386 v2+
  2800.         BX = logical device number
  2801.             00h-03h = LPT1-LPT4
  2802.             04h-07h = COM1-COM4
  2803.     CH,CL,DH = three character break sequence
  2804.     DL = subfunction
  2805.         00h set break string
  2806.         else reset break
  2807. Return: AL = status (see AH=81h)
  2808. Notes:    mode 00h affects only logical LPT1
  2809.     when the break string is encountered, the spool file will be closed and
  2810.       queued for printing automatically
  2811.     the break string is not permanently saved, and will be reset each time
  2812.       MW386 or the user is rebooted
  2813. SeeAlso: AH=9Bh
  2814. --------N-1798-------------------------------
  2815. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  2816.     AH = 98h
  2817.     AL = 00h
  2818.     DL = printer number (FFh=current)
  2819. Return: AL = status
  2820.         00h successful
  2821.         01h incorrect printer
  2822.         02h task not found
  2823. Note:    MW386 supports this function for compatibility only; it is a NOP
  2824. --------N-1799-------------------------------
  2825. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  2826.     AH = 99h
  2827.     AL = mode
  2828.         00h NTNX compatibility
  2829.         DL = NTNX printer number (see AH=88h)
  2830.             (FFh = task's current logical LPT1)
  2831.         DH = mode
  2832.             bit 0: get mode if 1, set mode if 0
  2833.             bit 1: private ("attached")
  2834.             bit 2: direct instead of spooled
  2835.             bits 3-7 reserved (0)
  2836.         01h MW386
  2837.         DX = MW386 printer number
  2838.         CL = mode (as for DH above)
  2839. Return: AL = status (see AH=81h)
  2840.     DH = mode (bits 1 and 2 set as above)
  2841.     DL = printer owner's user number if not spooled
  2842. --------N-179A-------------------------------
  2843. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  2844.     AH = 9Ah
  2845.     AL = mode
  2846.         00h NTNX compatibility
  2847.         DX = NTNX printer number (see AH=88h)
  2848.             (FFFFh = current logical LPT1)
  2849.         01h MW386
  2850.         DX = MW386 printer number
  2851.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  2852. Return: AL = status (see AH=81h)
  2853. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  2854.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  2855. SeeAlso: AH=A4h
  2856. --------N-179B-------------------------------
  2857. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  2858.     AH = 9Bh
  2859.     AL = mode
  2860.         00h NTNX compatibility
  2861.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  2862.         01h MW386
  2863.         CX = timeout value in seconds (00h = never)
  2864.         02h MW386 v2+
  2865.         BX = logical device number
  2866.             00h-03h = LPT1-LPT4
  2867.             04h-07h = COM1-COM4
  2868.         CX = timeout value in seconds (00h = never)
  2869. Return: AL = status (see AH=81h)
  2870. Notes:    modes 00h and 01h affect only the current logical LPT1
  2871.     if no data is sent to a printer for the specified amount of time, the
  2872.       spool file will be closed and queued for printing automatically
  2873. SeeAlso: AH=97h
  2874. --------N-17A0-------------------------------
  2875. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  2876.     AH = A0h
  2877.     AL = mode
  2878.         00h NTNX compatibility
  2879.         DX = ??? (NTNX, MW386 v1.x only)
  2880.         02h MW386 v2+
  2881.         BX = logical device number
  2882.             00h-03h = LPT1-LPT4
  2883.             04h-07h = COM1-COM4
  2884.     CX:SI -> ASCIZ pathname
  2885. Return: AL = status (see AH=81h)
  2886. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  2887.       the original file to be modified or deleted while the copy is printed
  2888.     in mode 00h, the file is printed on logical LPT1
  2889. SeeAlso: AH=90h
  2890. --------N-17A4-------------------------------
  2891. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  2892.     AH = A4h
  2893.     AL = new state
  2894.         00h form feed after end of print job disabled
  2895.         01h form feed enabled
  2896. Return: AL = status (see AH=81h)
  2897. Note:    only affects the current logical LPT1
  2898. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  2899. --------N-17A6-------------------------------
  2900. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  2901.     AH = A6h
  2902.     AL = new state
  2903.         00h banner page before print job disabled
  2904.         01h banner page enabled
  2905. Return: AL = status (see AH=81h)
  2906. Note:    only affects the current logical LPT1
  2907. SeeAlso: AH=A4h
  2908. --------N-17A7-------------------------------
  2909. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  2910.     AH = A7h
  2911.     AL = spool flags
  2912.         bit 0: banner page enabled (see AH=A4h)
  2913.         bit 1: form feed enabled (see AH=A6h)
  2914.         bits 2-6: reserved (0)
  2915.         bit 7: set flags if 1, get flags if 0
  2916.     BX = logical device number
  2917.         00h-03h = LPT1-LPT4
  2918.         04h-07h = COM1-COM4
  2919. Return: AL = status (see AH=81h)
  2920. Note:    the documentation does not state which register contains the result of
  2921.       a GET
  2922. SeeAlso: AH=A4h,AH=A6h
  2923. --------N-17A8-------------------------------
  2924. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  2925.     AH = A8h
  2926.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  2927. Return: AL = status (see AH=81h)
  2928. Note:    allows application to specify banner page filename for spool files
  2929.       collected from the application's printer output
  2930. SeeAlso: AH=A9h
  2931. --------N-17A9-------------------------------
  2932. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  2933.     AH = A9h
  2934.     AL = new spool drive (2=C:,3=D:,etc)
  2935. Return: AL = status (see AH=81h)
  2936. Note:    does not remove previous spooling directory since jobs may be pending
  2937. SeeAlso: AH=A8h
  2938. --------N-17AA-------------------------------
  2939. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  2940.     AH = AAh
  2941.     AL = mode
  2942.         00h NTNX
  2943.         DX = NTNX printer number (see AH=88h)
  2944.         01h MW386
  2945.         DX = MW386 printer number
  2946. Return: AH = instantaneous printer status
  2947.         00h printer ready
  2948.         01h not ready
  2949.         12h off line
  2950.         13h out of paper
  2951.         14h general device failure
  2952.         15h device timeout
  2953.         16h bad device number
  2954. --------N-17AF-------------------------------
  2955. INT 17 - Alloy MW386 - CHECK SPOOLER
  2956.     AH = AFh
  2957. Return: AX = 55AAh if spooler available
  2958. --------c-17C0-------------------------------
  2959. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  2960.     AH = C0h
  2961.     DX = printer port (0-3)
  2962. Return: ES:BX -> control block (see below)
  2963. SeeAlso: AH=C1h
  2964.  
  2965. Format of control block:
  2966. Offset    Size    Description
  2967.  00h    WORD    printer number
  2968.  02h    WORD    address of printer status port
  2969.  04h    WORD    number of first record in queue
  2970.  06h    WORD    number of last record in queue
  2971.  08h    DWORD    characters already printed
  2972.  0Ch    DWORD    number of characters remaining
  2973.  10h    DWORD    pointer to dequeue buffer
  2974.  14h    DWORD    previous count of characters printed
  2975.  18h    DWORD    number of clock ticks taken to print them
  2976.  1Ch    WORD    offset of next character to output
  2977.  1Eh    WORD    offset of next character to print
  2978.  20h    WORD    pointer to spooling queue record
  2979.  22h    BYTE    current spooling status
  2980.  23h    BYTE    current printer status:
  2981.         00h OK
  2982.         01h not ready
  2983.         02h paused with message
  2984.         03h paused
  2985.         04h initializing
  2986.         FEh non-existent port
  2987.         FFh not spooled
  2988.  24h    BYTE    current control record type
  2989.  25h    WORD    observed printer speed
  2990.  27h    WORD    characters to print per service
  2991.  29h    BYTE    01h if disk write needed
  2992.  2Ah    BYTE    01h if queued data should be flushed
  2993.  2Bh    BYTE    01h to update cps status
  2994. --------c-17C1--------------------------------
  2995. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  2996.     AH = C1h
  2997.     DX = printer port (0-3)
  2998.     DS:SI -> ASCIIZ string to save for display
  2999. Note:    flushes pending writes
  3000. SeeAlso: AH=C0h,AH=C2h
  3001. --------c-17C2-------------------------------
  3002. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  3003.     AH = C2h
  3004.     DX = printer port (0-3)
  3005. SeeAlso: AH=C3h
  3006. --------c-17C3-------------------------------
  3007. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  3008.     AH = C3h
  3009.     DX = printer port (0-3)
  3010. SeeAlso: AH=C2h,AH=C7h
  3011. --------c-17C4-------------------------------
  3012. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  3013.     AH = C4h
  3014. Return: DI = B0BFh
  3015.     SI = segment
  3016. --------c-17C5-------------------------------
  3017. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  3018.     AH = C5h
  3019.     DX = printer port (0-3)
  3020. Note:    cancels up to the pause record
  3021. --------c-17C6-------------------------------
  3022. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  3023.     AH = C6h
  3024.     DX = printer port (0-3)
  3025. Return: AX = 0 printer not active or at pause
  3026.        = 1 printer busy
  3027. --------c-17C7-------------------------------
  3028. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  3029.     AH = C7h
  3030.     DX = printer port (0-3)
  3031. SeeAlso: AH=C3h
  3032. --------P-17CD00-----------------------------
  3033. INT 17 - INSET - EXECUTE COMMAND STRING
  3034.     AX = CD00h
  3035.     DS:DX -> ASCIZ command string (max 80 bytes)
  3036. Return: CX = 07C2h (1986d)
  3037. Note:    user interface menus pop up after last command, unless that command
  3038.     exits INSET
  3039. --------P-17CD01-----------------------------
  3040. INT 17 - INSET - GET IMAGE SIZE
  3041.     AX = CD01h
  3042.     DS:DX -> ASCIZ name of image file
  3043. Return: AX = height in 1/720th inch
  3044.     BX = width in 1/720th inch
  3045.     CX = 07C2h (1986d)
  3046. --------P-17CD02-----------------------------
  3047. INT 17 - INSET - INITIALIZE
  3048.     AX = CD02h
  3049. Return: CX = 07C2h (1986d)
  3050. Note:    all open files are closed and the printer is reset
  3051. SeeAlso: AX=CD04h
  3052. --------P-17CD03-----------------------------
  3053. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  3054.     AX = CD03h
  3055. Return: CX = 07C2h (1986d)
  3056. --------P-17CD04-----------------------------
  3057. INT 17 - INSET - INITIALIZE LINKED MODE
  3058.     AX = CD04h
  3059.     ES:SI -> FAR routine for linked mode
  3060. Return: CX = 07C2h
  3061. Note:    calling sequence for linked-mode routine
  3062.     AL = 00h send character in BL to printer
  3063.        = 01h send CX bytes from DS:DX to printer
  3064.        = 02h move print head to horizontal starting position of image
  3065.     return code for linked-mode routine:
  3066.     AX = 0000h success
  3067.        = 0001h failure
  3068. SeeAlso: AX=CD02h,AX=CD08h
  3069. --------P-17CD05-----------------------------
  3070. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  3071.     AX = CD05h
  3072.     DS:DX -> ASCIZ name of PIX file
  3073.     CX = left margin of text in 1/720th inch
  3074. Return: AH = printer type
  3075.         00h page-oriented (multiple images may be placed side-by-side)
  3076.         01h line-oriented (use AX=CD06h for vertical paper movement)
  3077.     CX = 07C2h (1986d)
  3078. SeeAlso: AX=CD07h
  3079. --------P-17CD06-----------------------------
  3080. INT 17 - INSET - GRAPHICS LINE FEED
  3081.     AX = CD06h
  3082. Return: AH = completion status
  3083.         00h image complete
  3084.         01h image incomplete
  3085.     CX = 07C2h (1986d)
  3086. SeeAlso: AX=CD09h
  3087. --------P-17CD07-----------------------------
  3088. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  3089.     AX = CD07h
  3090. Return: CX = 07C2h
  3091. SeeAlso: AX=CD05h
  3092. --------P-17CD08-----------------------------
  3093. INT 17 - INSET - CANCEL LINK MODE
  3094.     AX = CD08h
  3095. Return: CX = 07C2h
  3096. SeeAlso: AX=CD04h
  3097. --------P-17CD09-----------------------------
  3098. INT 17 - INSET - ALTER TEXT LINE SPACING
  3099.     AX = CD09h
  3100.     CX = line spacing in 1/720th inch
  3101. Return: CX = 07C2h
  3102. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  3103. SeeAlso: AX=CD06h
  3104. --------P-17CD0A-----------------------------
  3105. INT 17 - INSET - GET SETUP
  3106.     AX = CD0Ah
  3107.     DS:DX -> buffer for IN.SET data
  3108. Return: CX = 07C2h
  3109. --------P-17CD0B-----------------------------
  3110. INT 17 - INSET - START GETTING SCALED IMAGE
  3111.     AX = CD0Bh
  3112.     DS:SI -> ASCIZ pathname of .PIX file
  3113.     BX = number of bitplanes
  3114.     CX = number of rows in output bitmap
  3115.     DX = number of columns in output bitmap
  3116. Return: AX = status
  3117.         0000h OK
  3118.         FFFFh error
  3119. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  3120. --------P-17CD0C-----------------------------
  3121. INT 17 - INSET - GET NEXT IMAGE STRIP
  3122.     AX = CD0Ch
  3123. Return: AX = status
  3124.         0000h OK but not complete
  3125.         0001h OK and image complete
  3126.         FFFFh error
  3127.     DS:SI -> buffer (max 4K) for bit map strip
  3128.     CX = start row
  3129.     DX = number of rows
  3130.     BX = offset in bytes between bit planes
  3131. Note:    buffer may be overwritten by subsequent calls
  3132. SeeAlso: AX=CD0Bh
  3133. --------P-17F0-------------------------------
  3134. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  3135.     AH = F0h
  3136.     DX = printer port (0-3)
  3137. Return: AX = 0001h Jetstream present
  3138.          else  non-Jetstream port
  3139. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  3140.       to drive printers at up to 80000 characters per second
  3141. --------P-17F1-------------------------------
  3142. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  3143.     AH = F1h
  3144.     CX = data buffer length
  3145.     DX = printer port (0-3)
  3146.     DS:SI -> data buffer
  3147. Return: AX = status
  3148.         0000h printer not ready (see also AH=02h)
  3149.         other printing started
  3150. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  3151. --------P-17F2-------------------------------
  3152. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  3153.     AH = F2h
  3154.     DX = printer port (0-3)
  3155. Return: AX = status
  3156.         0000h prior print request finished
  3157.         other number of characters left to print
  3158. SeeAlso: AH=02h,AH=F1h,AH=F3h
  3159. --------P-17F3-------------------------------
  3160. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  3161.     AH = F3h
  3162.     DX = printer port (0-3)
  3163. Return: AX = number of unprinted characters due to abort
  3164. SeeAlso: AH=F1h,AH=F4h
  3165. --------P-17F4-------------------------------
  3166. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  3167.     AH = F4h
  3168.     DX = printer port (0-3)
  3169.     DS:DS -> FAR post address (called with interrupts on)
  3170. SeeAlso: AH=F1h,AH=F3h
  3171. --------P-17F5-------------------------------
  3172. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  3173.     AH = F5h
  3174.     CX = data buffer length
  3175.     DX = printer port (0-3)
  3176.     DS:SI -> data buffer (32-bit physical address)
  3177. Return: AX = status
  3178.         0000h printer not ready (see also AH=02h)
  3179.         other printing started
  3180. SeeAlso: AH=F1h
  3181. ----------17FF--BX0000-----------------------
  3182. INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
  3183.     AH = FFh
  3184.     BX = 0000h
  3185.     CX = 0000h
  3186.     DX = printer port number
  3187. Return: AH = printer status (see AH=00h)
  3188. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3189.       operating system by The Software Link, Inc.
  3190. Desc:    close the spool file immediately instead of waiting for the close time
  3191.       to elapse
  3192. SeeAlso: AH=01h,AH=03h"PC-MOS"
  3193. --------B-18---------------------------------
  3194. INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
  3195. Desc:    called when there is no bootable disk available to the system
  3196. Notes:    only PCs produced by IBM contain BASIC in ROM, so the action is
  3197.       unpredicatable on compatibles; this interrupt often reboots the
  3198.       system, and often has no effect at all
  3199.     network cards with their own BIOS can hook this interrupt to allow
  3200.       a diskless boot off the network (even when a hard disk is present
  3201.       if none of the partitions is marked as the boot partition)
  3202. SeeAlso: INT 86"NetBIOS"
  3203. --------J-1800-------------------------------
  3204. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  3205.     AH = 00h
  3206. Return: AX = keystroke
  3207. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  3208. --------J-1801-------------------------------
  3209. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  3210.     AH = 01h
  3211. Return: ZF set if no keystroke available
  3212.     ZF clear if keystroke available
  3213.         AX = keystroke
  3214. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  3215. --------J-1802-------------------------------
  3216. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  3217.     AH = 02h
  3218. Return: AL = shift flags
  3219. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  3220. --------J-1803-------------------------------
  3221. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  3222.     AH = 03h
  3223.     ???
  3224. Return: ???
  3225. SeeAlso: AH=00h,AH=04h
  3226. --------J-1804-------------------------------
  3227. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  3228.     AH = 04h
  3229.     ???
  3230. Return: ???
  3231. Note:    details are not available at this time
  3232. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  3233. --------J-18---------------------------------
  3234. INT 18 - NEC PC-9800 series - VIDEO
  3235.     AH = function
  3236.         0Ah set video mode
  3237.         0Bh get video mode
  3238.         0Ch start text screen display
  3239.         0Dh end text screen display
  3240.         0Eh set single display area
  3241.         0Fh set multiple display area
  3242.         10h set cursor shape
  3243.         11h display cursor
  3244.         12h terminate cursor
  3245.         13h set cursor position
  3246.         14h read font patter
  3247.         16h initialize text video RAM
  3248.         1Ah define user character
  3249.     ???
  3250. Return: ???
  3251. Notes:    details are not available at this time
  3252.     text video RAM is located at segments A000h (characters) and A200h
  3253.       (attributes)
  3254. --------B-19---------------------------------
  3255. INT 19 - SYSTEM - BOOTSTRAP LOADER
  3256. Desc:    This interrupt reboots the system without clearing memory or restoring
  3257.       interrupt vectors.  Because interrupt vectors are preserved, this
  3258.       interrupt usually causes a system hang if any TSRs have hooked
  3259.       vectors from 00h through 1Ch, particularly INT 08.
  3260. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  3261.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  3262.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  3263.       This sector should contain a master bootstrap loader and a partition
  3264.       table.  After loading the master boot sector at 0000h:7C00h, the
  3265.       master bootstrap loader is given control.  It will scan the partition
  3266.       table for an active partition, and will then load the operating
  3267.       system's bootstrap loader (contained in the first sector of the
  3268.       active partition) and give it control.
  3269.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  3270.       disk have a valid boot sector
  3271.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  3272.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  3273.       a reset, store 0000h at 0040h:0072h before jumping.
  3274.     VDISK.SYS hooks this interrupt to allow applications to find out how
  3275.       much extended memory has been used by VDISKs (see below).  DOS 3.3+
  3276.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  3277.       at the beginning of its INT 19 handler segment, thus causing some
  3278.       programs to overwrite extended memory which is already in use.
  3279.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  3280.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  3281.       contains extended partitions which point at each other in a loop,
  3282.       since it will never find the end of the linked list of extended
  3283.       partitions
  3284. SeeAlso: INT 14/AH=17h,INT 18
  3285.  
  3286. Format of VDISK header block (at beginning of INT 19 handler's segment):
  3287. Offset    Size    Description
  3288.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  3289.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  3290.  1Dh 15 BYTEs    n/a
  3291.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  3292.  
  3293. Format of hard disk master boot sector:
  3294. Offset    Size    Description
  3295.  00h 446 BYTEs    Master bootstrap loader code
  3296. 1BEh 16 BYTEs    partition record for partition 1 (see below)
  3297. 1CEh 16 BYTEs    partition record for partition 2
  3298. 1DEh 16 BYTEs    partition record for partition 3
  3299. 1EEh 16 BYTEs    partition record for partition 4
  3300. 1FEh    WORD    signature, AA55h indicates valid boot block
  3301.  
  3302. Format of partition record:
  3303. Offset    Size    Description
  3304.  00h    BYTE    boot indicator (80h = active partition)
  3305.  01h    BYTE    partition start head
  3306.  02h    BYTE    partition start sector (bits 0-5)
  3307.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  3308.  04h    BYTE    operating system indicator (see below)
  3309.  05h    BYTE    partition end head
  3310.  06h    BYTE    partition end sector (bits 0-5)
  3311.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  3312.  08h    DWORD    sectors preceding partition
  3313.  0Ch    DWORD    length of partition in sectors
  3314.  
  3315. Values for operating system indicator:
  3316.  00h    empty
  3317.  01h    DOS 12-bit FAT
  3318.  02h    XENIX root file system
  3319.  03h    XENIX /usr file system (obsolete)
  3320.  04h    DOS 16-bit FAT
  3321.  05h    DOS 3.3+ extended partition
  3322.  06h    DOS 3.31+ Large File System
  3323.  07h    QNX
  3324.  07h    OS/2 HPFS
  3325.  07h    Advanced Unix
  3326.  08h    AIX bootable partition, SplitDrive
  3327.  09h    AIX data partition
  3328.  09h    Coherent filesystem
  3329.  0Ah    OS/2 Boot Manager
  3330.  0Ah    OPUS
  3331.  0Ah    Coherent swap partition
  3332.  10h    OPUS
  3333.  24h    NEC MS-DOS 3.x
  3334.  40h    VENIX 80286
  3335.  50h    Disk Manager, read-only partition
  3336.  51h    Disk Manager, read/write partition
  3337.  51h    Novell???
  3338.  52h    CP/M
  3339.  52h    Microport System V/386
  3340.  56h    GoldenBow VFeature
  3341.  61h    SpeedStor
  3342.  63h    Unix SysV/386, 386/ix
  3343.  63h    Mach, MtXinu BSD 4.3 on Mach
  3344.  63h    GNU HURD
  3345.  64h    Novell NetWare
  3346.  65h    Novell NetWare (3.11)
  3347.  75h    PC/IX
  3348.  80h    Minix v1.1 - 1.4a
  3349.  81h    Minix v1.4b+
  3350.  81h    Linux
  3351.  81h    Mitac Advanced Disk Manager
  3352.  82h    Linux Swap partition (planned)
  3353.  84h    OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
  3354.  93h    Amoeba file system
  3355.  94h    Amoeba bad block table
  3356.  B7h    BSDI file system (secondarily swap)
  3357.  B8h    BSDI swap partition (secondarily file system)
  3358.  C1h    DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
  3359.  C4h    DR-DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
  3360.  C6h    DR-DOS 6.0 LOGIN.EXE-secured Huge partition
  3361.  DBh    CP/M, Concurrent CP/M, Concurrent DOS
  3362.  DBh    CTOS (Convergent Technologies OS)
  3363.  E1h    SpeedStor 12-bit FAT extended partition
  3364.  E4h    SpeedStor 16-bit FAT extended partition
  3365.  F2h    DOS 3.3+ secondary
  3366.  FEh    LANstep
  3367.  FFh    Xenix bad block table
  3368. --------B-1A00-------------------------------
  3369. INT 1A - TIME - GET SYSTEM TIME
  3370.     AH = 00h
  3371. Return: CX:DX = number of clock ticks since midnight
  3372.     AL = midnight flag, nonzero if midnight passed since time last read
  3373. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  3374.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  3375.       it, leading to loss of a day if two consecutive midnights pass
  3376.       without a request for the time (e.g. if the system is on but idle)
  3377. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 62/AX=0099h
  3378. --------B-1A01-------------------------------
  3379. INT 1A - TIME - SET SYSTEM TIME
  3380.     AH = 01h
  3381.     CX:DX = number of clock ticks since midnight
  3382. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  3383. --------B-1A02-------------------------------
  3384. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  3385.     AH = 02h
  3386. Return: CF clear if successful
  3387.         CH = hour (BCD)
  3388.         CL = minutes (BCD)
  3389.         DH = seconds (BCD)
  3390.         DL = daylight savings flag (00h standard time, 01h daylight time)
  3391.     CF set on error (i.e. clock not running or in middle of update)
  3392. SeeAlso: AH=00h
  3393. --------B-1A03-------------------------------
  3394. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  3395.     AH = 03h
  3396.     CH = hour (BCD)
  3397.     CL = minutes (BCD)
  3398.     DH = seconds (BCD)
  3399.     DL = daylight savings flag (00h standard time, 01h daylight time)
  3400. SeeAlso: AH=01h
  3401. --------B-1A04-------------------------------
  3402. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  3403.     AH = 04h
  3404. Return: CF clear if successful
  3405.         CH = century (BCD)
  3406.         CL = year (BCD)
  3407.         DH = month (BCD)
  3408.         DL = day (BCD)
  3409.     CF set on error
  3410. SeeAlso: AH=02h,AH=05h,INT 21/AH=2Ah
  3411. --------B-1A05-------------------------------
  3412. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  3413.     AH = 05h
  3414.     CH = century (BCD)
  3415.     CL = year (BCD)
  3416.     DH = month (BCD)
  3417.     DL = day (BCD)
  3418. SeeAlso: AH=04h,INT 21/AH=2Bh
  3419. --------B-1A06-------------------------------
  3420. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  3421.     AH = 06h
  3422.     CH = hour (BCD)
  3423.     CL = minutes (BCD)
  3424.     DH = seconds (BCD)
  3425. Return: CF set on error (alarm already set or clock stopped for update)
  3426.     CF clear if successful
  3427. Note:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  3428.       time
  3429. SeeAlso: AH=07h,INT 4A
  3430. --------B-1A07-------------------------------
  3431. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  3432.     AH = 07h
  3433. Return: alarm disabled
  3434. Note:    does not disable the real-time clock's IRQ
  3435. SeeAlso: AH=06h,INT 70
  3436. --------B-1A08-------------------------------
  3437. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  3438.     AH = 08h
  3439.     CH = hours in BCD
  3440.     CL = minutes in BCD
  3441.     DH = seconds in BCD
  3442. SeeAlso: AH=09h
  3443. --------B-1A09-------------------------------
  3444. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  3445.     AH = 09h
  3446. Return: CH = hours in BCD
  3447.     CL = minutes in BCD
  3448.     DH = seconds in BCD
  3449.     DL = alarm status
  3450.         00h alarm not enabled
  3451.         01h alarm enabled but will not power up system
  3452.         02h alarm will power up system
  3453. SeeAlso: AH=08h
  3454. --------B-1A0A-------------------------------
  3455. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  3456.     AH = 0Ah
  3457. Return: CF set on error
  3458.     CF clear if successful
  3459.         CX = count of days since Jan 1,1980
  3460. SeeAlso: AH=04h,AH=0Bh
  3461. --------B-1A0B-------------------------------
  3462. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  3463.     AH = 0Bh
  3464.     CX = count of days since Jan 1,1980
  3465. Return: CF set on error
  3466.     CF clear if successful
  3467. SeeAlso: AH=05h,AH=0Ah
  3468. --------J-1A10-------------------------------
  3469. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  3470.     AH = 10h
  3471.     ???
  3472. Return: ???
  3473. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  3474. --------J-1A11-------------------------------
  3475. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  3476.     AH = 11h
  3477.     ???
  3478. Return: ???
  3479. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  3480. --------J-1A12-------------------------------
  3481. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  3482.     AH = 12h
  3483.     ???
  3484. Return: ???
  3485. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  3486. --------A-1A3601-----------------------------
  3487. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  3488.     AX = 3601h
  3489. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  3490.         ASCIZ string "WPCORP\0"
  3491. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  3492.       third party product wants to interface with it.  The third party
  3493.       product must intercept this interrupt and return the address of a
  3494.       keyboard monitor routine.
  3495.     Before checking for keyboard input, and after every key entered by the
  3496.       user, Word Perfect will call the routine whose address was provided
  3497.       in DS:SI with the following parameters:
  3498.         Entry:    AX = key code or 0
  3499.             BX = WordPerfect state flag
  3500.         Exit:    AX = 0 or key code
  3501.             BX = 0 or segment address of buffer with key codes
  3502.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  3503. SeeAlso: INT 16/AX=5500h
  3504. --------N-1A6108-----------------------------
  3505. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  3506.     AX = 6108h
  3507.     STACK:    WORD    conversation ID (0000h-0009h)
  3508.         DWORD    pointer to message buffer
  3509.         WORD    length of message
  3510.         DWORD    pointer to reply buffer
  3511.         WORD    length of reply buffer
  3512.         WORD    0000h (use default "Cparams" structure)
  3513. Return: AX = status (see below)
  3514.     STACK unchanged
  3515. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3516.       which implements the Simple Network Application Protocol
  3517. SeeAlso: AX=6205h
  3518.  
  3519. Values for status:
  3520.  0000h    successful
  3521.  F830h    "SNAP_ABORTED"
  3522.  FC04h    "SNAP_SERVERDIED"
  3523.  FC05h    "SNAP_RESEND"
  3524.  FC06h    "SNAP_SELECTFAILED"
  3525.  FC07h    "SNAP_WRONGVERSION"
  3526.  FC08h    "SNAP_INVALIDACK"
  3527.  FC09h    "SNAP_TIMEOUT"
  3528.  FC0Ah    "SNAP_SERVERREJECT"
  3529.  FC0Bh    "SNAP_NOREPLYDUE"
  3530.  FC0Ch    "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  3531.  FC0Dh    "SNAP_NOINIT"
  3532.  FC0Eh    "SNAP_SOCKETERROR"
  3533.  FC0Fh    "SNAP_BUFFERLIMIT"
  3534.  FC10h    "SNAP_INVALIDCID"
  3535.  FC11h    "SNAP_INVALIDOP"
  3536.  FC12h    "SNAP_XMITFAIL"
  3537.  FC13h    "SNAP_NOMORERETRIES"
  3538.  FC14h    "SNAP_BADPARMS"
  3539.  FC15h    "SNAP_NOMEMORY"
  3540.  FC16h    "SNAP_NOMORECONVS"
  3541.  FFFFh    failed (invalid function/parameter)
  3542. --------N-1A6205-----------------------------
  3543. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  3544.     AX = 6205h
  3545.     STACK:    WORD    conversation ID (0000h-0009h)
  3546.         DWORD    pointer to message
  3547.         WORD    length of message
  3548.         WORD    0000h (use default "Cparms" structure)
  3549. Return: AX = status (see AX=6108h)
  3550.     STACK unchanged
  3551. SeeAlso: AX=6108h
  3552. --------N-1A6308-----------------------------
  3553. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  3554.     AX = 6308h
  3555.     STACK:    WORD    offset of ASCIZ "guardian"
  3556.         WORD    offset of ASCIZ hostname
  3557.         WORD    offset of ASCIZ server name
  3558.         WORD    offset of ASCIZ userid
  3559.         WORD    offset of ASCIZ password
  3560.         WORD    offset of password length
  3561.         WORD    offset of password type
  3562.         WORD    offset of "Cparms" structure (see below)
  3563. Return: ???
  3564.     STACK unchanged
  3565. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  3566.       to allocate a buffer)
  3567. SeeAlso: AX=6405h,AX=7202h
  3568.  
  3569. Format of Cparms structure:
  3570. Offset    Size    Description
  3571.  00h    WORD    retry delay in seconds
  3572.  02h    WORD    timeout delay in seconds
  3573.  04h    WORD    maximum buffer size
  3574.  06h    WORD    encryption level
  3575. --------N-1A6405-----------------------------
  3576. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  3577.     AX = 6405h
  3578.     STACK:    WORD    conversation ID (0000h-0009h)
  3579.         DWORD    pointer to message buffer
  3580.         WORD    length of message
  3581.         WORD    0000h (use default "Cparms" structure)
  3582. Return: AX = status (see AX=6108h)
  3583.     STACK unchanged
  3584. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3585.       which implements the Simple Network Application Protocol
  3586. SeeAlso: AX=6308h
  3587. --------N-1A6900-----------------------------
  3588. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  3589.     AX = 6900h
  3590. Return: AX = value used for DS by resident code
  3591. SeeAlso: AX=6A01h,AX=6F01h
  3592. --------N-1A6A01-----------------------------
  3593. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  3594.     AX = 6A01h
  3595.     STACK:    WORD    number of bytes to allocate
  3596. Return: AX = offset of allocated buffer or 0000h if out of memory
  3597.     STACK unchanged
  3598. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3599.       which implements the Simple Network Application Protocol
  3600. SeeAlso: AX=6B01h
  3601. --------N-1A6B01-----------------------------
  3602. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  3603.     AX = 6B01h
  3604.     STACK:    WORD    offset within SNAP data segment of previously allocated
  3605.             buffer
  3606. Return: STACK unchanged
  3607. Note:    this call is a NOP if the specified offset is 0000h
  3608. SeeAlso: AX=6A01h
  3609. --------N-1A6C04-----------------------------
  3610. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  3611.     AX = 6C04h
  3612.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  3613.         WORD    segment of source buffer
  3614.         WORD    offset of source buffer
  3615.         WORD    number of bytes to copy
  3616. Return: AX = offset of byte after last one copied to destination
  3617.     STACK unchanged
  3618. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3619.       which implements the Simple Network Application Protocol
  3620. SeeAlso: AX=6D04h
  3621. --------N-1A6D04-----------------------------
  3622. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  3623.     AX = 6D04h
  3624.     STACK:    WORD    offset within SNAP data segment of source buffer
  3625.         WORD    segment of destination buffer
  3626.         WORD    offset of destination buffer
  3627.         WORD    number of bytes to copy
  3628. Return: AX = offset of byte after last one copied from source
  3629.     buffer filled
  3630.     STACK unchanged
  3631. SeeAlso: AX=6C04h
  3632. --------N-1A6E01-----------------------------
  3633. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  3634.     AX = 6E01h
  3635.     STACK:    WORD    new value for ???
  3636. Return: AX = old value of ???
  3637.     STACK unchanged
  3638. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3639.       which implements the Simple Network Application Protocol
  3640. --------N-1A6F01-----------------------------
  3641. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  3642.     AX = 6F01h
  3643.     STACK: WORD 0000h
  3644. Return: AX = status
  3645.         0000h SNAP is resident
  3646.         other SNAP not present
  3647.     STACK unchanged
  3648. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3649.       which implements the Simple Network Application Protocol, and is
  3650.       required by PCVENUS (a network shell).  The combination of SNAP and
  3651.       PCVENUS allows the use of the Andrew File System as one or more
  3652.       networked drives.
  3653. SeeAlso: AX=6900h,AX=7400h
  3654. --------N-1A7002-----------------------------
  3655. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  3656.     AX = 7002h
  3657.     STACK:    WORD    anchor number (0000h-0009h)
  3658.         WORD    new value for the anchor
  3659. Return: AX = status
  3660.         0000h successful
  3661.         FFFFh failed (top word on stack not in range 00h-09h)
  3662.     STACK unchanged
  3663. SeeAlso: AX=7101h
  3664. --------N-1A7101-----------------------------
  3665. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  3666.     AX = 7101h
  3667.     STACK:    WORD    anchor number (0000h-0009h)
  3668. Return: AX = anchor's value
  3669.     STACK unchanged
  3670. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3671.       which implements the Simple Network Application Protocol
  3672. SeeAlso: AX=7002h
  3673. --------N-1A7202-----------------------------
  3674. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  3675.     AX = 7202h
  3676.     STACK:    WORD    conversation ID (0000h-0009h)
  3677.         WORD    offset within resident data segment of "Cparms"
  3678.             structure (see AX=6308h)
  3679. Return: AX = status???
  3680.     STACK unchanged
  3681. SeeAlso: AX=6308h
  3682. --------N-1A7302-----------------------------
  3683. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  3684.     AX = 7302h
  3685.     STACK:    WORD    conversation ID (0000h-0009h)
  3686.         WORD    offset within resident data segment of ???
  3687. Return: AX = ???
  3688.     ???
  3689.     STACK unchanged
  3690. SeeAlso: AX=7400h
  3691. --------N-1A7400-----------------------------
  3692. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  3693.     AX = 7400h
  3694. Return: AX = version (AH=major, AL=minor)
  3695. Note:    this call is only valid if SNAP is installed
  3696. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  3697. --------N-1A75-------------------------------
  3698. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  3699.     AH = 75h
  3700.     AL = ???
  3701. Return: AX = ??? (0000h)
  3702. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3703.       which implements the Simple Network Application Protocol
  3704. --------N-1A76-------------------------------
  3705. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  3706.     AH = 76h
  3707.     AL = ???
  3708. Return: AX = ???
  3709. --------N-1A77-------------------------------
  3710. INT 1A - SNAP.EXE 3.4 - ???
  3711.     AH = 77h
  3712.     AL = ??? (at least 01h)
  3713.     STACK:    WORD    ???
  3714.         ???
  3715. Return: ???
  3716.     STACK unchanged
  3717. --------N-1A7802-----------------------------
  3718. INT 1A - SNAP.EXE 3.4 - ???
  3719.     AX = 7802h
  3720.     STACK:    WORD    ???
  3721.         WORD    ???
  3722. Return: ???
  3723.     STACK unchanged
  3724. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3725.       which implements the Simple Network Application Protocol
  3726. --------s-1A7F-------------------------------
  3727. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  3728.     AH = 7Fh
  3729.     ???
  3730. Return: ???
  3731. SeeAlso: AH=80h,AH=83h,AH=85h
  3732. --------s-1A80-------------------------------
  3733. INT 1A - PCjr - SET UP SOUND MULTIPLEXOR
  3734.     AH = 80h
  3735.     AL = 00h source is 8253 channel 2
  3736.          01h source is cassette input
  3737.          02h source is I/O channel "Audio IN"
  3738.          03h source is sound generator chip
  3739. SeeAlso: AH=7Fh,AH=83h
  3740. --------X-1A80-------------------------------
  3741. INT 1A - PCMCIA Socket Services - GET NUMBER OF ADAPTERS
  3742.     AH = 80h
  3743.     ???
  3744. Return: ???
  3745. SeeAlso: AH=83h"PCMCIA"
  3746. --------X-1A81-------------------------------
  3747. INT 1A - PCMCIA Socket Services - REGISTER STATUS CHANGE CALLBACK
  3748.     AH = 81h
  3749.     ???
  3750. Return: ???
  3751. SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
  3752. --------s-1A8100-----------------------------
  3753. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  3754.     AX = 8100h
  3755. Return: AH > 80h if supported
  3756. --------X-1A82-------------------------------
  3757. INT 1A - PCMCIA Socket Services - REGISTER CARD TECHNOLOGY CALLBACK
  3758.     AH = 82h
  3759.     ???
  3760. Return: ???
  3761. SeeAlso: AH=81h"PCMCIA"
  3762. --------s-1A83-------------------------------
  3763. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  3764.     AH = 83h
  3765.     AL = volume (0=lowest, 7=highest)
  3766.     CX = number of bytes to play
  3767.     DX = time between sound samples (multiples of 273 nanoseconds)
  3768.     ES:BX -> sound data (array of 8-bit PCM samples)
  3769. Return: ???
  3770. Notes:    this call returns immediately while the sound plays in the
  3771.       background
  3772.     The sound data pointed to by ES:BX probably shouldn't cross a 64k
  3773.       boundary.  The BIOS appears to call INT 15/AX=91FBh when the sound
  3774.       device underflows to allow another INT 1A/AH=83h for seamless
  3775.       playing of long sounds.
  3776. SeeAlso: AH=84h,INT 15/AH=91h
  3777. --------X-1A83-------------------------------
  3778. INT 1A - PCMCIA Socket Services - GET SOCKET SERVICES VERSION NUMBER
  3779.     AH = 83h
  3780.     ???
  3781. Return: ???
  3782. SeeAlso: AH=80h"PCMCIA"
  3783. --------s-1A84-------------------------------
  3784. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  3785.     AH = 84h
  3786. Return: ???
  3787. SeeAlso: AH=83h,AH=85h
  3788. --------X-1A84-------------------------------
  3789. INT 1A - PCMCIA Socket Services - INQUIRE ADAPTER
  3790.     AH = 84h
  3791.     ???
  3792. Return: ???
  3793. SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
  3794. --------s-1A85-------------------------------
  3795. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  3796.     AH = 85h
  3797.     ???
  3798. Return: ???
  3799. SeeAlso: AH=7Fh,AH=83h
  3800. --------X-1A85-------------------------------
  3801. INT 1A - PCMCIA Socket Services - GET ADAPTER
  3802.     AH = 85h
  3803.     ???
  3804. Return: ???
  3805. SeeAlso: AH=84h"PCMCIA",AH=86h
  3806. --------X-1A86-------------------------------
  3807. INT 1A - PCMCIA Socket Services - SET ADAPTER
  3808.     AH = 86h
  3809.     ???
  3810. Return: ???
  3811. SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
  3812. --------X-1A87-------------------------------
  3813. INT 1A - PCMCIA Socket Services - INQUIRE WINDOW
  3814.     AH = 87h
  3815.     ???
  3816. Return: ???
  3817. SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
  3818. --------X-1A88-------------------------------
  3819. INT 1A - PCMCIA Socket Services - GET WINDOW
  3820.     AH = 88h
  3821.     ???
  3822. Return: ???
  3823. SeeAlso: AH=87h,AH=89h,AH=8Ah
  3824. --------X-1A89-------------------------------
  3825. INT 1A - PCMCIA Socket Services - SET WINDOW
  3826.     AH = 89h
  3827.     ???
  3828. Return: ???
  3829. SeeAlso: AH=87h,AH=88h,AH=8Bh
  3830. --------X-1A8A-------------------------------
  3831. INT 1A - PCMCIA Socket Services - GET PAGE
  3832.     AH = 8Ah
  3833.     ???
  3834. Return: ???
  3835. SeeAlso: AH=88h,AH=8Bh
  3836. --------X-1A8B-------------------------------
  3837. INT 1A - PCMCIA Socket Services - SET PAGE
  3838.     AH = 8Bh
  3839.     ???
  3840. Return: ???
  3841. SeeAlso: AH=89h,AH=8Ah
  3842. --------X-1A8C-------------------------------
  3843. INT 1A - PCMCIA Socket Services - INQUIRE SOCKET
  3844.     AH = 8Ch
  3845.     ???
  3846. Return: ???
  3847. SeeAlso: AH=87h,AH=8Dh,AH=8Eh
  3848. --------X-1A8D-------------------------------
  3849. INT 1A - PCMCIA Socket Services - GET SOCKET
  3850.     AH = 8Dh
  3851.     ???
  3852. Return: ???
  3853. SeeAlso: AH=8Ch,AH=8Eh
  3854. --------X-1A8E-------------------------------
  3855. INT 1A - PCMCIA Socket Services - SET SOCKET
  3856.     AH = 8Eh
  3857.     ???
  3858. Return: ???
  3859. SeeAlso: AH=8Ch,AH=8Dh
  3860. --------X-1A8F-------------------------------
  3861. INT 1A - PCMCIA Socket Services - GET CARD
  3862.     AH = 8Fh
  3863.     ???
  3864. Return: ???
  3865. SeeAlso: AH=8Dh,AH=90h
  3866. --------X-1A90-------------------------------
  3867. INT 1A - PCMCIA Socket Services - RESET CARD
  3868.     AH = 90h
  3869.     ???
  3870. Return: ???
  3871. --------X-1A91-------------------------------
  3872. INT 1A - PCMCIA Socket Services - READ ONE
  3873.     AH = 91h
  3874.     ???
  3875. Return: ???
  3876. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  3877. --------X-1A92-------------------------------
  3878. INT 1A - PCMCIA Socket Services - WRITE ONE
  3879.     AH = 92h
  3880.     ???
  3881. Return: ???
  3882. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  3883. --------X-1A93-------------------------------
  3884. INT 1A - PCMCIA Socket Services - READ MULTIPLE
  3885.     AH = 93h
  3886.     ???
  3887. Return: ???
  3888. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  3889. --------X-1A94-------------------------------
  3890. INT 1A - PCMCIA Socket Services - WRITE MULTIPLE
  3891.     AH = 94h
  3892.     ???
  3893. Return: ???
  3894. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  3895. --------X-1A95-------------------------------
  3896. INT 1A - PCMCIA Socket Services - INQUIRE ERROR DETECTION CODE
  3897.     AH = 95h
  3898.     ???
  3899. Return: ???
  3900. SeeAlso: AH=96h,AH=9Ch
  3901. --------X-1A96-------------------------------
  3902. INT 1A - PCMCIA Socket Services - GET ERROR DETECTION CODE
  3903.     AH = 96h
  3904.     ???
  3905. Return: ???
  3906. SeeAlso: AH=95h,AH=97h,AH=9Ch
  3907. --------X-1A97-------------------------------
  3908. INT 1A - PCMCIA Socket Services - SET ERROR DETECTION CODE
  3909.     AH = 97h
  3910.     ???
  3911. Return: ???
  3912. SeeAlso: AH=96h,AH=9Ch
  3913. --------X-1A98-------------------------------
  3914. INT 1A - PCMCIA Socket Services - START ERROR DETECTION CODE
  3915.     AH = 98h
  3916.     ???
  3917. Return: ???
  3918. SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
  3919. --------X-1A99-------------------------------
  3920. INT 1A - PCMCIA Socket Services - PAUSE ERROR DETECTION CODE
  3921.     AH = 99h
  3922.     ???
  3923. Return: ???
  3924. SeeAlso: AH=9Ah
  3925. --------X-1A9A-------------------------------
  3926. INT 1A - PCMCIA Socket Services - RESUME ERROR DETECTION CODE
  3927.     AH = 9Ah
  3928.     ???
  3929. Return: ???
  3930. SeeAlso: AH=99h,AH=98h
  3931. --------X-1A9B-------------------------------
  3932. INT 1A - PCMCIA Socket Services - STOP ERROR DETECTION CODE
  3933.     AH = 9Bh
  3934.     ???
  3935. Return: ???
  3936. SeeAlso: AH=98h,AH=99h,AH=9Ch
  3937. --------X-1A9C-------------------------------
  3938. INT 1A - PCMCIA Socket Services - READ ERROR DETECTION CODE
  3939.     AH = 9Ch
  3940.     ???
  3941. Return: ???
  3942. SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
  3943. --------c-1AA0-------------------------------
  3944. INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
  3945.     AH = A0h
  3946. Return: AH = B0h if installed
  3947.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  3948.         ES = code segment
  3949.         ES:BX -> name of current spool file
  3950.         ES:SI -> current despool file
  3951.         CL = despooler state (00h disabled, 41h enabled)
  3952.         CH = spooler state (00h disabled, 41h enabled)
  3953.         DL = 00h despooler is currently active printing a file
  3954.            = 41h despooler is standing by
  3955.         DH = 00h ???
  3956.            = 41h ???
  3957.         DI = 0000h ???
  3958.          0001h ???
  3959. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  3960.       Software Company
  3961. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3962.       as that is a licensed version of Disk Spool II
  3963. SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
  3964. --------c-1AAB-------------------------------
  3965. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  3966.     AH = ABh
  3967. Return: AH = BAh if installed
  3968.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  3969.         ES = code segment
  3970.         ES:BX -> name of current spool file
  3971.         ES:SI -> current despool file
  3972.         CL = 00h despooler is disabled
  3973.            = 41h despooler is enabled
  3974.         CH = 00h spooler is disabled
  3975.            = 41h spooler is enabled
  3976.         DL = 00h despooler is currently active printing a file
  3977.            = 41h despooler is standing by
  3978.         DH = 00h ???
  3979.            = 41h ???
  3980.         DI = 0000h ???
  3981.          0001h ???
  3982. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  3983.       Software Company
  3984. SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
  3985. --------c-1AAC-------------------------------
  3986. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  3987.     AH = ACh
  3988. Return: (see AH=ABh)
  3989. Note:    this function is identical to AH=ABh
  3990. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  3991. --------c-1AAD-------------------------------
  3992. INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
  3993.     AH = ADh
  3994.     AL = function code
  3995.         02h enable spooler only
  3996.         03h enable the despooler
  3997.         04h disable the despooler
  3998.         08h inhibit popup menu
  3999.         09h enable popup menu
  4000.         0Ah ???
  4001.         0Bh disable the spooler
  4002.         0Ch start despooler after last successfully printed document???
  4003.         0Dh start despooler at the exact point where it last left off???
  4004.         0Eh pop up the menu
  4005.         0Fh ???
  4006.         11h ???
  4007.         14h ???
  4008.         15h ???
  4009.         16h ???
  4010.         17h ???
  4011.         18h ???
  4012.         19h ???
  4013.         20h clear file pointed to by the despooler???
  4014.         21h ???
  4015.         22h ???
  4016.         23h ???
  4017.         30h ???
  4018. Return: AH = 00h if successful
  4019. SeeAlso: AH=ABh
  4020. --------d-1AB001CX4D52-----------------------
  4021. INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
  4022.     AX = B001h
  4023.     CX = 4D52h ("MR")
  4024.     DX = 4349h ("CI")
  4025. Return: CX = 4943h ("IC") if installed
  4026.     DX = 524Dh ("RM") if installed
  4027.         ES:DI -> MRCINFO structure (see below)
  4028. Note:    this call is functionally identical to INT 2F/AX=4A12h, which should
  4029.       be called first, as this call is used for the first, ROM-based
  4030.       MRCI server, while the other call is used for RAM-based servers
  4031.       which may be partially or entirely replacing a prior server
  4032. SeeAlso: INT 2F/AX=4A12h
  4033.  
  4034. Format of MRCINFO structure:
  4035. Offset    Size    Description
  4036.  00h  4 BYTEs    vendor signature
  4037.         "MSFT" Microsoft
  4038.  04h    WORD    server version (high=major)
  4039.  06h    WORD    MRCI specification version
  4040.  08h    DWORD    address of server entry point
  4041.  0Ch    WORD    bit flags: server capabilities (see below)
  4042.  0Eh    WORD    bit flags: hardware assisted capabilities (see below)
  4043.  10h    WORD    maximum block size supported by server (at least 8192 bytes)
  4044.  
  4045. Bitfields for capabilities:
  4046.  bit 0    standard compress
  4047.  bit 1    standard decompress
  4048.  bit 2    update compress
  4049.  bit 3    MaxCompress
  4050.  bit 4    reserved
  4051.  bit 5    incremental decompress
  4052.  bits 6-14 reserved
  4053.  bit 15 this structure is in ROM and can't be modified
  4054.     (server capabilities only)
  4055.  
  4056. Call MRCI entry point with:
  4057.     DS:SI -> MRCREQUEST structure (see below)
  4058.     CX = type of client (0000h application, 0001h file system)
  4059.     AX = operation
  4060.         0001h perform standard compression
  4061.         0002h perform standard decompression
  4062.         0004h perform update compression
  4063.         0008h perform MaxCompress
  4064.         0020h perform incremental decompression
  4065.     AX = FFFFh clear flags
  4066.         BX = bitmask of flags to clear (set bits in BX are flags to clear)
  4067. Return: AX = status
  4068.         0000h successful
  4069.         0001h invalid function
  4070.         0002h server busy, try again
  4071.         0003h destination buffer too small
  4072.         0004h incompressible data
  4073.         0005h bad compressed data format
  4074. Note:    MRCI driver may chain to a previous driver
  4075.  
  4076. Format of MRCREQUEST structure:
  4077. Offset    Size    Description
  4078.  00h    DWORD    pointer to source buffer
  4079.  04h    WORD    size of source buffer (0000h = 64K)
  4080.  06h    WORD    (UpdateCompress only)
  4081.         (call) offset in source buffer of beginning of changed data
  4082.         (return) offset in destination buffer of beginning of changed
  4083.             compressed data
  4084.  08h    DWORD    pointer to destination buffer
  4085.         must contain original compressed data for UpdateCompress
  4086.  0Ch    WORD    size of destination buffer (0000h = 64K)
  4087.         any compression: size of buffer for compressed data
  4088.         standard decompression: number of bytes to be decompressed
  4089.         incremental decompression: number of byte to decompress now
  4090.         (return) actual size of resulting data
  4091.  0Eh    WORD    client compressed data storage allocation size
  4092.  10h    DWORD    incremental decompression state data
  4093.         set to 00000000h before first incremental decompression call
  4094. Notes:    the source and destination buffers may not overlap
  4095.     the source and destination buffer sizes should normally be the same
  4096.     application should not update the contents of the MRCREQUEST structure
  4097.       between incremental decompression calls
  4098. --------X-1AB101-----------------------------
  4099. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK
  4100.     AX = B101h
  4101. Return: AH = 00h if installed
  4102.         CF clear
  4103.         EDX = 20494350h (' ICP')
  4104.         EDI = physical address of protected-mode entry point (see below)
  4105.         AL = PCI hardware characteristics
  4106.         bit 0: configuration space access mechanism 1 supported
  4107.         bit 1: configuration space access mechanism 2 supported
  4108.         bits 2-3 reserved
  4109.         bit 4: Special Cycle generation mechanism 1 supported
  4110.         bit 5: Special Cycle generation mechanism 2 supported
  4111.         bits 6-7 reserved
  4112.         BH = PCI interface level major version (BCD)
  4113.         BL = PCI interface level minor version (BCD)
  4114.         CL = number of last PCI bus in system
  4115.     EAX, EBX, ECX, and EDX may be modified
  4116.     all other flags (except IF) may be modified
  4117. Note:    this function may require up to 1024 byte of stack; it will not enable
  4118.       interrupts if they were disabled before making the call
  4119. SeeAlso: AX=B181h
  4120.  
  4121. Call protected-mode entry point with:
  4122.     registers as for real/V86-mode INT call
  4123.     CS = ring 0 descriptor with access to full address space
  4124. Return: as for real/V86-mode call
  4125. --------X-1AB102-----------------------------
  4126. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE
  4127.     AX = B102h
  4128.     CX = device ID
  4129.     DX = vendor ID
  4130.     SI = device index (0-n)
  4131. Return: CF clear if successful
  4132.     CF set on error
  4133.     AH = status
  4134.         00h successful
  4135.         BL = bus number
  4136.         BH = device/function number (bits 7-3 device, bits 2-0 func)
  4137.         83h bad vendor ID
  4138.         86h device not found
  4139.     EAX, EBX, ECX, and EDX may be modified
  4140.     all other flags (except IF) may be modified
  4141. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4142.       interrupts if they were disabled before making the call
  4143.     device ID FFFFh may be reserved as a wildcard in future implementations
  4144.     the meanings of BL and BH on return may be exchanged in future
  4145.       implementations
  4146.     all devices sharing a single vendor ID and device ID may be enumerated
  4147.       by incrementing SI from 0 until error 86h is returned
  4148. SeeAlso: AX=B182h
  4149. --------X-1AB103-----------------------------
  4150. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE
  4151.     AX = B103h
  4152.     ECX = class code (bits 23-0)
  4153.     SI = device index (0-n)
  4154. Return: CF clear if successful
  4155.     CF set on error
  4156.     AH = status
  4157.         00h successful
  4158.         BL = bus number
  4159.         BH = device/function number (bits 7-3 device, bits 2-0 func)
  4160.         86h device not found
  4161.     EAX, EBX, ECX, and EDX may be modified
  4162.     all other flags (except IF) may be modified
  4163. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4164.       interrupts if they were disabled before making the call
  4165.     the meanings of BL and BH on return may be exchanged in future
  4166.       implementations
  4167.     all devices sharing the same Class Code may be enumerated by
  4168.       incrementing SI from 0 until error 86h is returned
  4169. SeeAlso: AX=B183h
  4170. --------X-1AB102-----------------------------
  4171. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS
  4172.     AX = B106h
  4173.     BL = bus number
  4174.     EDX = Special Cycle data
  4175. Return: CF clear if successful
  4176.     CF set on error
  4177.     AH = status
  4178.         00h successful
  4179.         81h unsupported function
  4180.     EAX, EBX, ECX, and EDX may be modified
  4181.     all other flags (except IF) may be modified
  4182. Note:    this function may require up to 1024 byte of stack; it will not enable
  4183.       interrupts if they were disabled before making the call
  4184. SeeAlso: AX=B186h
  4185. --------X-1AB108-----------------------------
  4186. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE
  4187.     AX = B108h
  4188.     BL = bus number
  4189.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4190.     DI = register number (0000h-00FFh)
  4191. Return: CF clear if successful
  4192.         CL = byte read
  4193.     CF set on error
  4194.     AH = status
  4195.         00h successful
  4196.         87h bad register number
  4197.     EAX, EBX, ECX, and EDX may be modified
  4198.     all other flags (except IF) may be modified
  4199. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4200.       interrupts if they were disabled before making the call
  4201.     the meanings of BL and BH on entry may be exchanged in future
  4202.       implementations
  4203. SeeAlso: AX=B188h
  4204. --------X-1AB109-----------------------------
  4205. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD
  4206.     AX = B109h
  4207.     BL = bus number
  4208.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4209.     DI = register number (0000h-00FFh)
  4210. Return: CF clear if successful
  4211.         CX = word read
  4212.     CF set on error
  4213.     AH = status
  4214.         00h successful
  4215.         87h bad register number
  4216.     EAX, EBX, ECX, and EDX may be modified
  4217.     all other flags (except IF) may be modified
  4218. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4219.       interrupts if they were disabled before making the call
  4220.     the meanings of BL and BH on entry may be exchanged in future
  4221.       implementations
  4222. SeeAlso: AX=B189h
  4223. --------X-1AB10A-----------------------------
  4224. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD
  4225.     AX = B10Ah
  4226.     BL = bus number
  4227.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4228.     DI = register number (0000h-00FFh)
  4229. Return: CF clear if successful
  4230.         ECX = dword read
  4231.     CF set on error
  4232.     AH = status
  4233.         00h successful
  4234.         87h bad register number
  4235.     EAX, EBX, ECX, and EDX may be modified
  4236.     all other flags (except IF) may be modified
  4237. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4238.       interrupts if they were disabled before making the call
  4239.     the meanings of BL and BH on entry may be exchanged in future
  4240.       implementations
  4241. SeeAlso: AX=B18Ah
  4242. --------X-1AB10B-----------------------------
  4243. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE
  4244.     AX = B10Bh
  4245.     BL = bus number
  4246.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4247.     DI = register number (0000h-00FFh)
  4248.     CL = byte to write
  4249. Return: CF clear if successful
  4250.     CF set on error
  4251.     AH = status
  4252.         00h successful
  4253.         87h bad register number
  4254.     EAX, EBX, ECX, and EDX may be modified
  4255.     all other flags (except IF) may be modified
  4256. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4257.       interrupts if they were disabled before making the call
  4258.     the meanings of BL and BH on entry may be exchanged in future
  4259.       implementations
  4260. SeeAlso: AX=B18Bh
  4261. --------X-1AB10C-----------------------------
  4262. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD
  4263.     AX = B10Ch
  4264.     BL = bus number
  4265.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4266.     DI = register number (multiple of 2 less than 0100h)
  4267.     CX = word to write
  4268. Return: CF clear if successful
  4269.     CF set on error
  4270.     AH = status
  4271.         00h successful
  4272.         87h bad register number
  4273.     EAX, EBX, ECX, and EDX may be modified
  4274.     all other flags (except IF) may be modified
  4275. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4276.       interrupts if they were disabled before making the call
  4277.     the meanings of BL and BH on entry may be exchanged in future
  4278.       implementations
  4279. SeeAlso: AX=B18Ch
  4280. --------X-1AB10D-----------------------------
  4281. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD
  4282.     AX = B10Dh
  4283.     BL = bus number
  4284.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4285.     DI = register number (multiple of 4 less than 0100h)
  4286.     ECX = dword to write
  4287. Return: CF clear if successful
  4288.     CF set on error
  4289.     AH = status
  4290.         00h successful
  4291.         87h bad register number
  4292.     EAX, EBX, ECX, and EDX may be modified
  4293.     all other flags (except IF) may be modified
  4294. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4295.       interrupts if they were disabled before making the call
  4296.     the meanings of BL and BH on entry may be exchanged in future
  4297.       implementations
  4298. SeeAlso: AX=B18Dh
  4299. --------X-1AB181-----------------------------
  4300. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK (32-bit)
  4301.     AX = B181h
  4302. Return: as for AX=B101h
  4303. SeeAlso: AX=B101h
  4304. --------X-1AB182-----------------------------
  4305. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE (32-bit)
  4306.     AX = B182h
  4307.     CX = device ID
  4308.     DX = vendor ID
  4309.     SI = device index (0-n)
  4310. Return: as for AX=B102h
  4311. SeeAlso: AX=B102h
  4312. --------X-1AB183-----------------------------
  4313. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE (32-bit)
  4314.     AX = B183h
  4315.     ECX = class code (bits 23-0)
  4316.     SI = device index (0-n)
  4317. Return: as for AX=B103h
  4318. SeeAlso: AX=B103h
  4319. --------X-1AB186-----------------------------
  4320. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS (32-bit)
  4321.     AX = B186h
  4322.     BL = bus number
  4323.     EDX = Special Cycle data
  4324. Return: as for AX=B106h
  4325. SeeAlso: AX=B106h
  4326. --------X-1AB188-----------------------------
  4327. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE (32-bit)
  4328.     AX = B188h
  4329.     BL = bus number
  4330.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4331.     DI = register number (0000h-00FFh)
  4332. Return: as for AX=B108h
  4333. SeeAlso: AX=B108h
  4334. --------X-1AB189-----------------------------
  4335. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD (32-bit)
  4336.     AX = B189h
  4337.     BL = bus number
  4338.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4339.     DI = register number (0000h-00FFh)
  4340. Return: as for AX=B109h
  4341. SeeAlso: AX=B109h
  4342. --------X-1AB18A-----------------------------
  4343. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD (32-bit)
  4344.     AX = B18Ah
  4345.     BL = bus number
  4346.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4347.     DI = register number (0000h-00FFh)
  4348. Return: as for AX=B10Ah
  4349. SeeAlso: AX=B10Ah
  4350. --------X-1AB18B-----------------------------
  4351. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE (32-bit)
  4352.     AX = B18Bh
  4353.     BL = bus number
  4354.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4355.     DI = register number (0000h-00FFh)
  4356.     CL = byte to write
  4357. Return: as for AX=B10Bh
  4358. SeeAlso: AX=B10Bh
  4359. --------X-1AB18C-----------------------------
  4360. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD (32-bit)
  4361.     AX = B18Ch
  4362.     BL = bus number
  4363.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4364.     DI = register number (multiple of 2 less than 0100h)
  4365.     CX = word to write
  4366. Return: as for AX=B10Ch
  4367. SeeAlso: AX=B10Ch
  4368. --------X-1AB18D-----------------------------
  4369. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD (32-bit)
  4370.     AX = B18Dh
  4371.     BL = bus number
  4372.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  4373.     DI = register number (multiple of 4 less than 0100h)
  4374.     ECX = dword to write
  4375. Return: as for AX=B10Dh
  4376. SeeAlso: AX=B10Dh
  4377. --------c-1AC0-------------------------------
  4378. INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
  4379.     AH = C0h
  4380. Return: (see AH=A0h)
  4381. Notes:    this call is identical to AH=A0h
  4382.     this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4383.       as that is a licensed version of Disk Spool II
  4384. SeeAlso: AH=A0h,AH=ABh,AH=D0h
  4385. ----------1ACCCCBXCCCC-----------------------
  4386. INT 1A U - DATEFIX - INSTALLATION CHECK
  4387.     AX = CCCCh
  4388.     BX = CCCCh
  4389.     CX = 0000h
  4390. Return: CX = CCCCh if installed
  4391.         ES:BX -> original interrupt handler
  4392. Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
  4393.       machines, where the realtime clock's calendar wraps after 1991
  4394. SeeAlso: AH=FEh,AH=FFh"AT&T"
  4395. --------c-1AD0-------------------------------
  4396. INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
  4397.     AH = D0h
  4398.     AL = function code
  4399.         01h enable spooler and despooler
  4400.         02h enable spooler only
  4401.         03h enable despooler at beginning of file
  4402.         04h disable the despooler
  4403.         05h disable the despooler and spooler
  4404.         06h clear the spool file
  4405.         08h inhibit the popup menu
  4406.         09h enable the popup menu
  4407.         0Ah ??? (called by Disk Spool's INT 21 handler)
  4408.         0Bh disable the spooler
  4409.         0Ch start despooler after last successfully printed document
  4410.         0Dh start despooler at the exact point where it last left off
  4411.         0Eh pop up the menu
  4412.         0Fh ???
  4413.         11h start new spool file??? (called by Disk Spool's INT 21 handler
  4414.             when a program terminates)
  4415.         14h ???
  4416.         15h delete despool file and reset ???
  4417.         16h ??? (writes something to unknown file)
  4418.         17h ??? (writes something to despool file, then reads something
  4419.             else and ???)
  4420.         18h ??? (reads something from despool file, and then ???)
  4421.         19h ??? (creates/truncates spool file)
  4422.         20h clear file pointed to by the despooler
  4423.         21h ??? (writes something to unknown file)
  4424.         22h ??? (writes something to spool file if spooler/despooler using
  4425.             same file)
  4426.         23h ??? (opens/creates unknown file, then ???)
  4427.         30h ???
  4428.         31h ???
  4429.         32h beep
  4430.         33h append CRLF to spool file???
  4431.         34h ???
  4432.         35h ???
  4433.         36h ???
  4434.         37h append CRLF to spool file and start a new spool file???
  4435.         38h ???
  4436.         40h ??? (v4.05)
  4437.         41h ??? (v4.05)
  4438.         51h ??? (called by Disk Spool's INT 21 handler)
  4439.         52h ??? (called by Disk Spool's INT 21 handler)
  4440.         57h ???
  4441.         5Ah ??? (v4.05)
  4442.         5Bh ??? (v4.05)
  4443.         5Ch ??? (v4.05)
  4444. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4445.       as that is a licensed version of Disk Spool II
  4446. SeeAlso: AH=A0h,AH=ADh
  4447. --------c-1AE0-------------------------------
  4448. INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
  4449.     AH = E0h
  4450.     AL = subfunction
  4451.         01h enable spooler
  4452.         02h disable spooler
  4453.         03h enable despooler
  4454.         04h disable despooler
  4455.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4456. Return: AH = status
  4457.         00h successful
  4458.         F0h printer port not managed by Disk Spool II
  4459.         FFH failed
  4460. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4461.       as that is a licensed version of Disk Spool II
  4462. SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
  4463. --------c-1AE1-------------------------------
  4464. INT 1A - Disk Spool II v4.0x - GET STATUS
  4465.     AH = E1h
  4466.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4467. Return: AH = status
  4468.         00h successful
  4469.         CL = despooler state (00h disabled, 41h enabled)
  4470.         CH = spooler state (00h disabled, 41h enabled)
  4471.         DL = despooler activity (00h standing by, 41h printing)
  4472.         ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
  4473.             or AutoDespool enabled)
  4474.         ES:SI -> ASCIZ name of current despool file
  4475.         ES:DI -> 3-byte file extension used by Disk Spool II
  4476.         F0h printer port not managed by Disk Spool II
  4477. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4478.       as that is a licensed version of Disk Spool II
  4479. SeeAlso: AH=A0h,AH=E0h,AH=E2h
  4480. --------c-1AE2-------------------------------
  4481. INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
  4482.     AH = E2h
  4483.     AL = which
  4484.         01h first
  4485.         02h next (can only call after "first")
  4486.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4487. Return: AH = status
  4488.         00h successful
  4489.         ES:BX -> ASCIZ filename
  4490.         F0h no (more) spool files
  4491.         FFh failed
  4492. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4493.       as that is a licensed version of Disk Spool II
  4494. SeeAlso: AH=E0h,AH=E1h
  4495. --------c-1AE301-----------------------------
  4496. INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
  4497.     AX = E301h
  4498.     ES:BX -> ASCIZ filename (max 32 chars)
  4499. Return: AH = status
  4500.         00h successful
  4501.         ES:SI -> spool file status record (see below)
  4502.         F0h not a spool file
  4503.         FFh failed
  4504. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4505.       as that is a licensed version of Disk Spool II
  4506. SeeAlso: AH=E0h,AX=E302h,AX=E401h
  4507.  
  4508. Format of spool file status record:
  4509. Offset    Size    Description
  4510.  00h    BYTE    hour of creation or last update
  4511.  01h    BYTE    minute of creation or last update
  4512.  02h    BYTE    year-1980 of creation or last update
  4513.  03h    BYTE    month of creation or last update
  4514.  04h    BYTE    day of creation or last update
  4515.  05h    BYTE    total number of copies to print
  4516.  06h    BYTE    number of copies already printed
  4517.  07h    BYTE    printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4518.  08h    BYTE    save status (00h delete after printing, 01h save)
  4519.  09h    BYTE    file status
  4520.         01h done printing, but being saved
  4521.         02h on hold
  4522.         03h queued for printing
  4523.         04h being spooled
  4524.         05h being despooled (i.e. printed)
  4525.  0Ah 16 BYTEs    ASCIZ description
  4526.  1Ah  2 WORDs    file size in bytes (high,low)
  4527.  1Eh  2 WORDs    bytes left to print (high,low)
  4528. --------c-1AE302-----------------------------
  4529. INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
  4530.     AX = E302h
  4531.     ES:BX -> ASCIZ filename (max 32 chars)
  4532.     ES:SI -> spool file status record (see AX=E301h)
  4533. Return: AH = status
  4534.         00h successful
  4535.         F0h not a spool file
  4536.         FFh failed
  4537. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4538.       as that is a licensed version of Disk Spool II
  4539. SeeAlso: AH=E0h,AX=E301h,AX=E401h
  4540. --------c-1AE401-----------------------------
  4541. INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
  4542.     AX = E401h
  4543.     ES:BX -> ASCIZ filename (max 32 chars)
  4544.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4545. Return: AH = status
  4546.         00h successful
  4547.         FFh failed
  4548. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4549.       as that is a licensed version of Disk Spool II
  4550. SeeAlso: AH=E1h,AX=E302h,AX=E402h
  4551. --------c-1AE402-----------------------------
  4552. INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
  4553.     AX = E402h
  4554.     ES:BX -> ASCIZ filename (max 32 chars)
  4555.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4556. Return: AH = status
  4557.         00h successful
  4558.         FFh failed
  4559. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4560.       as that is a licensed version of Disk Spool II
  4561. SeeAlso: AH=E1h,AX=E302h,AX=E401h
  4562. --------c-1AE5-------------------------------
  4563. INT 1A U - Emulaser ELSPL.COM - ???
  4564.     AH = E5h
  4565.     ???
  4566. Return: ???
  4567. Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
  4568.       as part of Vertisoft's Emulaser PostScript emulator
  4569. SeeAlso: AH=A0h,INT 17/AH=03h
  4570. --------c-1AEE-------------------------------
  4571. INT 1A U - Disk Spool II v4.05 - ???
  4572.     AH = EEh
  4573.     AL = printer port???
  4574.     ???
  4575. Return: ???
  4576. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4577.       as that is a licensed version of Disk Spool II
  4578. SeeAlso: AH=E1h
  4579. --------U-1AF7-------------------------------
  4580. INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
  4581.     AH = F7h
  4582. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  4583.       time to correct for clock drift
  4584. Note:    any AH value from F0h-F7h or F9h-FEh will perform this function in
  4585.       version 1.1, but F7h is the function called by transient portion
  4586. SeeAlso: AH=F8h,AH=FFh"RighTime"
  4587. --------U-1AF8-------------------------------
  4588. INT 1A - RighTime v1.1 - ENABLE
  4589.     AH = F8h
  4590. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  4591.       time to correct for clock drift
  4592. Note:    RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
  4593.       TeSseRact program identifier based on its current state: "RighTime"
  4594.       when enabled, "RighTim"F7h when disabled.
  4595. SeeAlso: AH=F7h,AH=FFh"RighTime"
  4596. --------b-1AFE-------------------------------
  4597. INT 1A - AT&T 6300 - READ TIME AND DATE
  4598.     AH = FEh
  4599. Return: BX = day count (0 = Jan 1, 1984)
  4600.     CH = hour
  4601.     CL = minute
  4602.     DH = second
  4603.     DL = hundredths
  4604. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
  4605. --------b-1AFF-------------------------------
  4606. INT 1A - AT&T 6300 - SET TIME AND DATE
  4607.     AH = FFh
  4608.     BX = day count (0 = Jan 1, 1984)
  4609.     CH = hour
  4610.     CL = minute
  4611.     DH = second
  4612.     DL = hundredths
  4613. Return: ???
  4614. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh,INT 21/AH=2Dh
  4615. --------U-1AFF-------------------------------
  4616. INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
  4617.     AH = FFh
  4618. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  4619.       time to correct for clock drift
  4620. Note:    upon being permanently disabled, RighTime closes the file handle
  4621.       referencing its executable (which is updated with time correction
  4622.       information every two minutes while RighTime is enabled).
  4623. --------s-1AFF00-----------------------------
  4624. INT 1A - SND - INSTALLATION CHECK???
  4625.     AX = FF00h
  4626. Return: AL = version??? (02h)
  4627.     AH = busy flag (00h if not in a SND call, 01h if SND currently active)
  4628. Note:    the SND API is also supported by IC (Internal Commands) v2.0, a
  4629.       shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
  4630.       command set
  4631. SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
  4632. --------s-1AFF01-----------------------------
  4633. INT 1A - SND - PAUSE
  4634.     AX = FF01h
  4635.     DX = number of clock ticks to delay
  4636. Return: AH = status
  4637.         00h successful
  4638.         01h SND busy
  4639. Notes:    if successful, execution returns to the caller after the delay expires;
  4640.       if SND is busy, execution returns immediately
  4641.     the IC v2.0 implementation of this API makes no special allowance for
  4642.       time rollover at midnight, which can cause the delay to be over one
  4643.       hour if this function is called just before the BIOS time count
  4644.       rolls over and the delay extends into the next day
  4645. SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
  4646. SeeAlso: INT E0/CL=BDh
  4647. --------s-1AFF02-----------------------------
  4648. INT 1A - SND - START SOUND
  4649.     AX = FF02h
  4650.     DX = frequency in Hertz (14h-FFFFh)
  4651. Return: AH = status
  4652.         00h successful
  4653.         01h SND busy
  4654. SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
  4655. --------s-1AFF03-----------------------------
  4656. INT 1A - SND - STOP SOUND
  4657.     AX = FF03h
  4658. Return: AH = status
  4659.         00h successful
  4660.         01h busy
  4661. Note:    turns off any sound currently being emitted by the PC's speaker unless
  4662.       SND is currently busy processing an API call (this includes
  4663.       background music).  Use AX=FF05h to stop the sound even if an API
  4664.       call is in progress.
  4665. SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
  4666. --------s-1AFF04-----------------------------
  4667. INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
  4668.     AX = FF04h
  4669.     DS:DX -> ASCIZ music string
  4670. Return: AH = status
  4671.         00h successful (music begins playing in background)
  4672.         01h busy
  4673. Note:    the music string accepted by SND is not the same as that accepted by
  4674.       BASIC and other programs which process music strings
  4675. SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
  4676. --------s-1AFF05-----------------------------
  4677. INT 1A - SND - UNCONDITIONALLY STOP SOUND
  4678.     AX = FF05h
  4679. Return: AH = 00h (successful)
  4680. Note:    this function is the same as AX=FF03h, but will stop the sound even if
  4681.       SND is currently busy, such as playing background music
  4682. SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
  4683. --------B-1B---------------------------------
  4684. INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
  4685. Desc:    this interrupt is automatically called when INT 09 determines that
  4686.       Control-Break has been pressed
  4687. Note:    normally points to a short routine in DOS which sets the Ctrl-C flag,
  4688.       thus invoking INT 23h the next time DOS checks for Ctrl-C.
  4689. SeeAlso: INT 23
  4690. --------B-1C---------------------------------
  4691. INT 1C - TIME - SYSTEM TIMER TICK
  4692. Desc:    this interrupt is automatically called on each clock tick by the INT 08
  4693.       handler
  4694. Notes:    this is the preferred interrupt to chain when a program needs to be
  4695.       invoked regularly
  4696.     not available on NEC 9800-series PCs
  4697. SeeAlso: INT 08
  4698. --------B-1D---------------------------------
  4699. INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
  4700. Note:    default parameter table at F000h:F0A4h for 100% compatible BIOSes
  4701. SeeAlso: INT 10/AH=00h
  4702.  
  4703. Format of video parameters:
  4704. Offset    Size    Description
  4705.  00h 16 BYTEs    6845 register values for modes 00h and 01h
  4706.  10h 16 BYTEs    6845 register values for modes 02h and 03h
  4707.  20h 16 BYTEs    6845 register values for modes 04h and 05h
  4708.  30h 16 BYTEs    6845 register values for modes 06h and 07h
  4709.  40h    WORD    bytes in video buffer for modes 00h and 01h
  4710.  42h    WORD    bytes in video buffer for modes 02h and 03h
  4711.  44h    WORD    bytes in video buffer for modes 04h and 05h
  4712.  46h    WORD    bytes in video buffer for modes 06h and 07h
  4713.  48h  8 BYTEs    columns on screen for each of modes 00h through 07h
  4714.  50h  8 BYTEs    CRT controller mode bytes for each of modes 00h through 07h
  4715. --------B-1E---------------------------------
  4716. INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
  4717. Note:    default parameter table at F000h:EFC7h for 100% compatible BIOSes
  4718. SeeAlso: INT 13/AH=0Fh,INT 41
  4719.  
  4720. Format of diskette parameter table:
  4721. Offset    Size    Description
  4722.  00h    BYTE    first specify byte
  4723.         bits 7-4: step rate
  4724.         bits 3-0: head unload time (0Fh = 240 ms)
  4725.  01h    BYTE    second specify byte
  4726.         bits 7-1: head load time (01h = 4 ms)
  4727.         bit    0: non-DMA mode (always 0)
  4728.  02h    BYTE    delay until motor turned off (in clock ticks)
  4729.  03h    BYTE    bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
  4730.  04h    BYTE    sectors per track
  4731.  05h    BYTE    length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
  4732.  06h    BYTE    data length (ignored if bytes-per-sector field nonzero)
  4733.  07h    BYTE    gap length when formatting (50h for 5.25", 6Ch for 3.5")
  4734.  08h    BYTE    format filler byte (default F6h)
  4735.  09h    BYTE    head settle time in milliseconds
  4736.  0Ah    BYTE    motor start time in 1/8 seconds
  4737. --------B-1F---------------------------------
  4738. INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
  4739. Desc:    this vector points at 1024 bytes of graphics data, 8 bytes for each
  4740.       character 80h-FFh
  4741. Note:    graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
  4742.       compatible BIOSes
  4743. SeeAlso: INT 10/AX=5000h,INT 43
  4744. --------O-20---------------------------------
  4745. INT 20 - Minix - SEND/RECEIVE MESSAGE
  4746.     AX = process ID of other process
  4747.     BX -> message
  4748.     CX = operation (1 send, 2 receive, 3 send&receive)
  4749. Program: Minix is a Version 7 Unix-compatible operating system by Andrew
  4750.       Tanenbaum
  4751. Note:    the message contains the system call number (numbered as in V7
  4752.       Unix(tm)) and the call parameters
  4753. --------D-20---------------------------------
  4754. INT 20 - DOS 1+ - TERMINATE PROGRAM
  4755.     CS = PSP segment
  4756. Return: never
  4757. Note:    (see INT 21/AH=00h)
  4758. SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
  4759. --------G-20---------------------------------
  4760. INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
  4761.     ???
  4762. Return: ???
  4763. SeeAlso: INT 21"COMTROL"
  4764. --------G-21---------------------------------
  4765. INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
  4766.     ???
  4767. Return: AX = first segment available for control program use
  4768. SeeAlso: INT 20"COMTROL",INT 22"COMTROL"
  4769. --------D-2100-------------------------------
  4770. INT 21 - DOS 1+ - TERMINATE PROGRAM
  4771.     AH = 00h
  4772.     CS = PSP segment
  4773. Notes:    Microsoft recommends using INT 21/AH=4Ch for DOS 2+
  4774.     execution continues at the address stored in INT 22 after DOS performs
  4775.       whatever cleanup it needs to do
  4776.     if the PSP is its own parent, the process's memory is not freed; if
  4777.       INT 22 additionally points into the terminating program, the
  4778.       process is effectively NOT terminated
  4779.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4780. SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
  4781. --------D-2101-------------------------------
  4782. INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
  4783.     AH = 01h
  4784. Return: AL = character read
  4785. Notes:    ^C/^Break are checked, and INT 23 executed if read
  4786.     character is echoed to standard output
  4787.     standard input is always the keyboard and standard output the screen
  4788.       under DOS 1.x, but they may be redirected under DOS 2+
  4789. SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
  4790. --------D-2102-------------------------------
  4791. INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
  4792.     AH = 02h
  4793.     DL = character to write
  4794. Return: AL = last character output (despite the official docs which state
  4795.         nothing is returned) (at least DOS 3.3-5.0)
  4796. Notes:    ^C/^Break are checked, and INT 23 executed if pressed
  4797.     standard output is always the screen under DOS 1.x, but may be
  4798.       redirected under DOS 2+
  4799.     the last character output will be the character in DL unless DL=09h
  4800.       on entry, in which case AL=20h as tabs are expanded to blanks
  4801. SeeAlso: AH=06h,AH=09h
  4802. --------D-2103-------------------------------
  4803. INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
  4804.     AH = 03h
  4805. Return: AL = character read
  4806. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  4807.     STDAUX is usually the first serial port
  4808. SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
  4809. --------D-2104-------------------------------
  4810. INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
  4811.     AH = 04h
  4812.     DL = character to write
  4813. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  4814.     STDAUX is usually the first serial port
  4815.     if STDAUX is busy, this function will wait until it becomes free
  4816. SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
  4817. --------D-2105-------------------------------
  4818. INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
  4819.     AH = 05h
  4820.     DL = character to print
  4821. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  4822.     STDPRN is usually the first parallel port, but may be redirected under
  4823.       DOS 2+
  4824.     if the printer is busy, this function will wait
  4825. SeeAlso: INT 17/AH=00h
  4826. --------D-2106-------------------------------
  4827. INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
  4828.     AH = 06h
  4829.     DL = character (except FFh)
  4830. Return: AL = character output (despite official docs which state nothing is
  4831.         returned) (at least DOS 3.3-5.0)
  4832. Notes:    does not check ^C/^Break
  4833.     writes to standard output, which is always the screen under DOS 1.x,
  4834.       but may be redirected under DOS 2+
  4835. SeeAlso: AH=02h,AH=09h
  4836. --------D-2106--DLFF-------------------------
  4837. INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
  4838.     AH = 06h
  4839.     DL = FFh
  4840. Return: ZF set if no character available
  4841.     ZF clear if character available
  4842.         AL = character read
  4843. Notes:    ^C/^Break are NOT checked
  4844.     if the returned character is 00h, the user pressed a key with an
  4845.       extended keycode, which will be returned by the next call of this
  4846.       function
  4847.     reads from standard input, which is always the keyboard under DOS 1.x,
  4848.       but may be redirected under DOS 2+
  4849. SeeAlso: AH=0Bh
  4850. --------D-2107-------------------------------
  4851. INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
  4852.     AH = 07h
  4853. Return: AL = character read from standard input
  4854. Notes:    does not check ^C/^Break
  4855.     standard input is always the keyboard under DOS 1.x, but may be
  4856.       redirected under DOS 2+
  4857.     if the interim console flag is set (see AX=6301h), partially-formed
  4858.       double-byte characters may be returned
  4859. SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
  4860. --------D-2108-------------------------------
  4861. INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
  4862.     AH = 08h
  4863. Return: AL = character read from standard input
  4864. Notes:    ^C/^Break are checked, and INT 23 executed if detected
  4865.     standard input is always the keyboard under DOS 1.x, but may be
  4866.       redirected under DOS 2+
  4867.     if the interim console flag is set (see AX=6301h), partially-formed
  4868.       double-byte characters may be returned
  4869. SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h
  4870. --------D-2109-------------------------------
  4871. INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
  4872.     AH = 09h
  4873.     DS:DX -> '$'-terminated string
  4874. Return: AL = 24h (the '$' terminating the string, despite official docs which
  4875.         state that nothing is returned) (at least DOS 3.3-5.0)
  4876. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  4877.     standard output is always the screen under DOS 1.x, but may be
  4878.       redirected under DOS 2+
  4879.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  4880. SeeAlso: AH=02h,AH=06h"OUTPUT"
  4881. --------D-210A-------------------------------
  4882. INT 21 - DOS 1+ - BUFFERED INPUT
  4883.     AH = 0Ah
  4884.     DS:DX -> buffer (see below)
  4885. Return: buffer filled with user input
  4886. Notes:    ^C/^Break are checked, and INT 23 is called if either detected
  4887.     reads from standard input, which may be redirected under DOS 2+
  4888.     if the maximum buffer size (see below) is set to 00h, this call returns
  4889.       immediately without reading any input
  4890. SeeAlso: AH=0Ch,INT 2F/AX=4810h
  4891.  
  4892. Format of input buffer:
  4893. Offset    Size    Description
  4894.  00h    BYTE    maximum characters buffer can hold
  4895.  01h    BYTE    (input) number of chars from last input which may be recalled
  4896.         (return) number of characters actually read, excluding CR
  4897.  02h  N BYTEs    actual characters read, including the final carriage return
  4898. --------K-210A00-----------------------------
  4899. INT 21 - WCED v1.6+ - INSTALLATION CHECK
  4900.     AX = 0A00h
  4901.     DS:DX -> 6-byte buffer whose first two bytes must be 00h
  4902. Return: buffer offset 02h-05h filled with "Wced" if installed
  4903. Program: WCED is a free command-line editor and history utility by Stuart
  4904.       Russell
  4905. SeeAlso: AH=FFh"CED"
  4906. --------D-210B-------------------------------
  4907. INT 21 - DOS 1+ - GET STDIN STATUS
  4908.     AH = 0Bh
  4909. Return: AL = 00h if no character available
  4910.        = FFh if character is available
  4911. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  4912.     standard input is always the keyboard under DOS 1.x, but may be
  4913.       redirected under DOS 2+
  4914.     if the interim console flag is set (see AX=6301h), this function
  4915.       returns AL=FFh if a partially-formed double-byte character is
  4916.       available
  4917. SeeAlso: AH=06h"INPUT",AX=4406h
  4918. --------v-210B56-----------------------------
  4919. INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
  4920.     AX = 0B56h
  4921. Return: AX = 4952h if resident
  4922. SeeAlso: AX=0D20h
  4923. --------D-210C-------------------------------
  4924. INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
  4925.     AH = 0Ch
  4926.     AL = STDIN input function to execute after flushing buffer
  4927.     other registers as appropriate for the input function
  4928. Return: as appropriate for the specified input function
  4929. Note:    if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
  4930.       no input is attempted
  4931. SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
  4932. --------D-210D-------------------------------
  4933. INT 21 - DOS 1+ - DISK RESET
  4934.     AH = 0Dh
  4935. Notes:    writes all modified disk buffers to disk, but does not update directory
  4936.       information (that is only done when files are closed or a SYNC call
  4937.       is issued)
  4938. SeeAlso: AX=5D01h,INT 13/AH=00h,INT 2F/AX=1120h
  4939. --------v-210D20-----------------------------
  4940. INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
  4941.     AX = 0D20h
  4942. Return: AX = 1971h if resident
  4943. SeeAlso: AX=0B56h,AH=30h/DX=ABCDh
  4944. --------D-210E-------------------------------
  4945. INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
  4946.     AH = 0Eh
  4947.     DL = new default drive (00h = A:, 01h = B:, etc)
  4948. Return: AL = number of potentially valid drive letters
  4949. Notes:    under Novell NetWare, the return value is always 32, the number of
  4950.       drives that NetWare supports
  4951.     under DOS 3+, the return value is the greatest of 5, the value of
  4952.       LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
  4953.     on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
  4954.       may be accessed as either A: or B:
  4955.     otherwise, the return value is the highest drive actually present
  4956.     DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
  4957.       and 3+ a maximum of 26 drives
  4958. SeeAlso: AH=19h,AH=3Bh,AH=DBh
  4959. --------D-210F-------------------------------
  4960. INT 21 - DOS 1+ - OPEN FILE USING FCB
  4961.     AH = 0Fh
  4962.     DS:DX -> unopened File Control Block (see below)
  4963. Return: AL = status
  4964.         00h successful
  4965.         FFh file not found or access denied
  4966. Notes:    (DOS 3.1+) file opened for read/write in compatibility mode
  4967.     an unopened FCB has the drive, filename, and extension fields filled
  4968.       in and all other bytes cleared
  4969.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4970.     DR-DOS checks password attached with AX=4303h
  4971. SeeAlso: AH=10h,AH=16h,AH=3Dh,4303h
  4972.  
  4973. Format of File Control Block:
  4974. Offset    Size    Description
  4975.  -7    BYTE    extended FCB if FFh
  4976.  -6   5 BYTEs    reserved
  4977.  -1    BYTE    file attribute if extended FCB
  4978.  00h    BYTE    drive number (0 = default, 1 = A, etc)
  4979.  01h  8 BYTEs    blank-padded file name
  4980.  09h  3 BYTEs    blank-padded file extension
  4981.  0Ch    WORD    current block number
  4982.  0Eh    WORD    logical record size
  4983.  10h    DWORD    file size
  4984.  14h    WORD    date of last write (see AX=5700h)
  4985.  16h    WORD    time of last write (see AX=5700h) (DOS 1.1+)
  4986.  18h  8 BYTEs    reserved (see below)
  4987.  20h    BYTE    record within current block
  4988.  21h    DWORD    random access record number (if record size is > 64 bytes, high
  4989.         byte is omitted)
  4990. Note:    to use an extended FCB, you must specify the address of the FFh flag at
  4991.       offset -7, rather than the address of the drive number field
  4992.  
  4993. Format of reserved field for DOS 1.0:
  4994. Offset    Size    Description
  4995.  16h    WORD    location in directory (if high byte = FFh, low byte is device
  4996.         ID)
  4997.  18h    WORD    number of first cluster in file
  4998.  1Ah    WORD    current absolute cluster number on disk
  4999.  1Ch    WORD    current relative cluster number within file
  5000.         (0 = first cluster of file, 1 = second cluster, etc.)
  5001.  1Eh    BYTE    dirty flag (00h = not dirty)
  5002.  1Fh    BYTE    unused
  5003.  
  5004. Format of reserved field for DOS 1.10-1.25:
  5005. Offset    Size    Description
  5006.  18h    BYTE    bit 7: set if logical device
  5007.         bit 6: not dirty
  5008.         bits 5-0: disk number or logical device ID
  5009.  19h    WORD    starting cluster number on disk
  5010.  1Bh    WORD    current absolute cluster number on disk
  5011.  1Dh    WORD    current relative cluster number within file
  5012.  1Fh    BYTE    unused
  5013.  
  5014. Format of reserved field for DOS 2.x:
  5015. Offset    Size    Description
  5016.  18h    BYTE    bit 7: set if logical device
  5017.         bit 6: set if open???
  5018.         bits 5-0: ???
  5019.  19h    WORD    starting cluster number on disk
  5020.  1Bh    WORD    ???
  5021.  1Dh    BYTE    ???
  5022.  1Eh    BYTE    ???
  5023.  1Fh    BYTE    ???
  5024.  
  5025. Format of reserved field for DOS 3.x:
  5026. Offset    Size    Description
  5027.  18h    BYTE    number of system file table entry for file
  5028.  19h    BYTE    attributes
  5029.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  5030.               01 = SHARE.EXE not loaded, character device
  5031.               10 = SHARE.EXE loaded, remote file
  5032.               11 = SHARE.EXE loaded, local file or device
  5033.         bits 5-0: low six bits of device attribute word
  5034. ---SHARE.EXE loaded, local file---
  5035.  1Ah    WORD    starting cluster of file on disk
  5036.  1Ch    WORD    (DOS 3.x) offset within SHARE of sharing record (see AH=52h)
  5037.  1Eh    BYTE    file attribute
  5038.  1Fh    BYTE    ???
  5039. ---SHARE.EXE loaded, remote file---
  5040.  1Ah    WORD    number of sector containing directory entry
  5041.  1Ch    WORD    relative cluster within file of last cluster accessed
  5042.  1Eh    BYTE    absolute cluster number of last cluster accessed
  5043.  1Fh    BYTE    ???
  5044. ---SHARE.EXE not loaded---
  5045.  1Ah    BYTE    (low byte of device attribute word AND 0Ch) OR open mode
  5046.  1Bh    WORD    starting cluster of file
  5047.  1Dh    WORD    number of sector containing directory entry
  5048.  1Fh    BYTE    number of directory entry within sector
  5049. Note:    if FCB opened on character device, DWORD at 1Ah is set to the address
  5050.       of the device driver header, then the BYTE at 1Ah is overwritten.
  5051.  
  5052. Format of reserved field for DOS 5.0:
  5053. Offset    Size    Description
  5054.  18h    BYTE    number of system file table entry for file
  5055.  19h    BYTE    attributes
  5056.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  5057.               01 = SHARE.EXE not loaded, character device
  5058.               10 = SHARE.EXE loaded, remote file
  5059.               11 = SHARE.EXE loaded, local file or device
  5060.         bits 5-0: low six bits of device attribute word
  5061. ---SHARE.EXE loaded, local file---
  5062.  1Ah    WORD    starting cluster of file on disk
  5063.  1Ch    WORD    unique sequence number of sharing record
  5064.  1Eh    BYTE    file attributes
  5065.  1Fh    BYTE    unused???
  5066. ---SHARE.EXE loaded, remote file---
  5067.  1Ah    WORD    network handle
  5068.  1Ch    DWORD    network ID
  5069. ---SHARE not loaded, local device---
  5070.  1Ah    DWORD    pointer to device driver header
  5071.  1Eh  2 BYTEs    unused???
  5072. ---SHARE not loaded, local file---
  5073.  1Ah    BYTE    extra info
  5074.         bit 7: read-only attribute from SFT
  5075.         bit 6: archive attribute from SFT
  5076.         bits 5-0: high bits of sector number
  5077.  1Bh    WORD    starting cluster of file
  5078.  1Dh    WORD    low word of sector number containing directory entry
  5079.  1Fh    BYTE    number of directory entry within sector
  5080. --------D-2110-------------------------------
  5081. INT 21 - DOS 1+ - CLOSE FILE USING FCB
  5082.     AH = 10h
  5083.     DS:DX -> File Control Block (see AH=0Fh)
  5084. Return: AL = status
  5085.         00h successful
  5086.         FFh failed
  5087. Notes:    a successful close forces all disk buffers used by the file to be
  5088.       written and the directory entry to be updated
  5089.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5090. SeeAlso: AH=0Fh,AH=16h,AH=3Eh
  5091. --------D-2111-------------------------------
  5092. INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
  5093.     AH = 11h
  5094.     DS:DX -> unopened FCB (see AH=0Fh), may contain '?' wildcards
  5095. Return: AL = status
  5096.         00h successful
  5097.         [DTA] unopened FCB for first matching file
  5098.         FFh no matching filename, or bad FCB
  5099. Notes:    the type of the returned FCB depends on whether the input FCB was a
  5100.       normal or an extended FCB
  5101.     the data returned in the DTA is actually the drive number (or extended
  5102.       FCB header and drive number) followed by the file's directory entry
  5103.       (see below); this format happens to be compatible with an unopened
  5104.       FCB
  5105.     for extended FCBs with search attribute 08h, the volume label (if any)
  5106.       will be returned even if the current directory is not the root dir.
  5107.     DOS 3+ also allows the '*' wildcard
  5108.     the search FCB must not be modified if AH=12h will be used to continue
  5109.       searching; DOS 3.3 has set the following parts of the FCB:
  5110.          0Ch    BYTE    ???
  5111.          0Dh    WORD    directory entry number of matching file
  5112.          0Fh    WORD    cluster number of current directory
  5113.          11h  4 BYTEs    ???
  5114.          15h    BYTE    drive number (1=A:)
  5115.     this function is used by many copy protection schemes to obtain the
  5116.       starting cluster of a file
  5117. SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
  5118.  
  5119. Format of directory entry:
  5120. Offset    Size    Description
  5121.  00h  8 BYTEs    blank-padded filename
  5122.  08h  3 BYTEs    blank-padded file extension
  5123.  0Bh    BYTE    attributes
  5124.  0Ch 10 BYTEs    reserved
  5125.         used by DR-DOS to store file password
  5126.  16h    WORD    time of creation or last update (see AX=5700h)
  5127.  18h    WORD    date of creation or last update (see AX=5700h)
  5128.  1Ah    WORD    starting cluster number
  5129.  1Ch    DWORD    file size
  5130. --------D-2112-------------------------------
  5131. INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
  5132.     AH = 12h
  5133.     DS:DX -> unopened FCB (see AH=0Fh)
  5134. Return: AL = status
  5135.         00h successful
  5136.         [DTA] = unopened FCB
  5137.         FFh no more matching filenames
  5138. Note:    (see AH=11h)
  5139.     assumes that successful FindFirst executed on search FCB before call
  5140. SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
  5141. --------D-2113-------------------------------
  5142. INT 21 - DOS 1+ - DELETE FILE USING FCB
  5143.     AH = 13h
  5144.     DS:DX -> unopened FCB (see AH=0Fh), filename filled with template for
  5145.         deletion ('?' wildcards allowed)
  5146. Return: AL = status
  5147.         00h one or more files successfully deleted
  5148.         FFh no matching files or all were read-only or locked
  5149. Notes:    DOS 1.25+ deletes everything in the current directory (including
  5150.       subdirectories) and sets the first byte of the name to 00h (entry
  5151.       never used) instead of E5h if called on an extended FCB with
  5152.       filename '???????????' and bits 0-4 of the attribute set (bits 1 and
  5153.       2 for DOS 1.x).  This may have originally been an optimization to
  5154.       minimize directory searching after a mass deletion (DOS 1.25+ stop
  5155.       the directory search upon encountering a never-used entry), but can
  5156.       corrupt the filesystem under DOS 2+ because subdirectories are
  5157.       removed without deleting the files they contain.
  5158.     currently-open files should not be deleted
  5159.     MS-DOS allows deletion of read-only files with an extended FCB, whereas
  5160.       Novell NetWare does not
  5161. SeeAlso: AH=41h,INT 2F/AX=1113h
  5162. --------D-2114-------------------------------
  5163. INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
  5164.     AH = 14h
  5165.     DS:DX -> opened FCB (see AH=0Fh)
  5166. Return: AL = status
  5167.         00h successful
  5168.         01h end of file (no data)
  5169.         02h segment wrap in DTA
  5170.         03h end of file, partial record read
  5171.     [DTA] = record read from file
  5172. Notes:    reads a record of the size specified in the FCB beginning at the
  5173.       current file position, then updates the current block and current
  5174.       record fields in the FCB
  5175.     if a partial record was read, it is zero-padded to the full size
  5176.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5177. SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh,INT 2F/AX=1108h
  5178. --------D-2115-------------------------------
  5179. INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
  5180.     AH = 15h
  5181.     DS:DX -> opened FCB (see AH=0Fh)
  5182.     [DTA] = record to write
  5183. Return: AL = status
  5184.         00h successful
  5185.         01h disk full
  5186.         02h segment wrap in DTA
  5187. Notes:    writes a record of the size specified in the FCB beginning at the
  5188.       current file position, then updates the current block and current
  5189.       record fields in the FCB
  5190.     if less than a full sector is written, the data is placed in a DOS
  5191.       buffer to be written out at a later time
  5192.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5193. SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
  5194. --------D-2116-------------------------------
  5195. INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
  5196.     AH = 16h
  5197.     DS:DX -> unopened FCB (see AH=0Fh), wildcards not allowed
  5198. Return: AL = status
  5199.         00h successful
  5200.         FFh directory full or file exists and is read-only or locked
  5201. Notes:    if file already exists, it is truncated to zero length
  5202.     if an extended FCB is used, the file is given the attribute in the
  5203.       FCB; this is how to create a volume label in the disk's root dir
  5204.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5205. SeeAlso: AH=0Fh,AH=10h,AH=3Ch
  5206. --------D-2117-------------------------------
  5207. INT 21 - DOS 1+ - RENAME FILE USING FCB
  5208.     AH = 17h
  5209.     DS:DX -> modified FCB (see also AH=0Fh)
  5210.         the old filename ('?' wildcards OK) is in the standard location
  5211.         while the new filename ('?' wildcards OK) is stored in the 11
  5212.         bytes beginning at offset 11h
  5213. Return: AL = status
  5214.         00h successfully renamed
  5215.         FFh no matching files,file is read-only, or new name already exists
  5216. Notes:    subdirectories may be renamed using an extended FCB with the
  5217.       appropriate attribute, as may volume labels
  5218.     DR-DOS checks password attached with AX=4303h before permitting rename
  5219. SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h
  5220. --------D-2118-------------------------------
  5221. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  5222.     AH = 18h
  5223. Return: AL = 00h
  5224. Note:    corresponds to the CP/M BDOS function "get bit map of logged drives",
  5225.       which is meaningless under MS-DOS
  5226. SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h
  5227. --------D-2119-------------------------------
  5228. INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
  5229.     AH = 19h
  5230. Return: AL = drive (00h = A:, 01h = B:, etc)
  5231. Note:    Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
  5232.       from a particular location every time it starts a command to
  5233.       determine when to issue an automatic EOJ
  5234. SeeAlso: AH=0Eh,AH=47h,AH=BBh
  5235. --------D-211A-------------------------------
  5236. INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
  5237.     AH = 1Ah
  5238.     DS:DX -> Disk Transfer Area (DTA)
  5239. Notes:    the DTA is set to PSP:0080h when a program is started
  5240.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  5241. SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
  5242. --------D-211B-------------------------------
  5243. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
  5244.     AH = 1Bh
  5245. Return: AL = sectors per cluster (allocation unit)
  5246.     CX = bytes per sector
  5247.     DX = total number of clusters
  5248.     DS:BX -> media ID byte (see below)
  5249. Note:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  5250.       versions return a pointer to a copy of the FAT's ID byte
  5251. SeeAlso: AH=1Ch,AH=36h
  5252.  
  5253. Values for media ID byte:
  5254.  FFh    floppy, double-sided, 8 sectors per track (320K)
  5255.  FEh    floppy, single-sided, 8 sectors per track (160K)
  5256.  FDh    floppy, double-sided, 9 sectors per track (360K)
  5257.  FCh    floppy, single-sided, 9 sectors per track (180K)
  5258.  F9h    floppy, double-sided, 15 sectors per track (1.2M)
  5259.  F8h    hard disk
  5260.  F0h    other
  5261. --------D-211C-------------------------------
  5262. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
  5263.     AH = 1Ch
  5264.     DL = drive (00h = default, 01h = A:, etc)
  5265. Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
  5266.     CX = bytes per sector
  5267.     DX = total number of clusters
  5268.     DS:BX -> media ID byte (see AH=1Bh)
  5269. Notes:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  5270.       versions return a pointer to a copy of the FAT's ID byte
  5271.     on a DBLSPACE drive, the total number of clusters is based on the
  5272.       estimated compression ratio
  5273. SeeAlso: AH=1Bh,AH=36h
  5274. --------D-211D-------------------------------
  5275. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  5276.     AH = 1Dh
  5277. Return: AL = 00h
  5278. Note:    corresponds to the CP/M BDOS function "get bit map of read-only
  5279.       drives", which is meaningless under MS-DOS
  5280. SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
  5281. --------D-211E-------------------------------
  5282. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  5283.     AH = 1Eh
  5284. Return: AL = 00h
  5285. Note:    corresponds to the CP/M BDOS function "set file attributes" which was
  5286.      meaningless under MS-DOS 1.x
  5287. SeeAlso: AH=18h,AH=1Dh,AH=20h
  5288. --------D-211F-------------------------------
  5289. INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
  5290.     AH = 1Fh
  5291. Return: AL = status
  5292.         00h successful
  5293.         DS:BX -> Drive Parameter Block (DPB) (see below for DOS 1.x,
  5294.             AH=32h for DOS 2+)
  5295.         FFh invalid drive
  5296. Note:    this call was undocumented prior to the release of DOS 5.0; however,
  5297.       only the DOS 4+ version of the DPB has been documented
  5298. SeeAlso: AH=32h
  5299.  
  5300. Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
  5301. Offset    Size    Description
  5302.  00h    BYTE    sequential device ID
  5303.  01h    BYTE    logical drive number (0=A:)
  5304.  02h    WORD    bytes per sector
  5305.  04h    BYTE    highest sector number within a cluster
  5306.  05h    BYTE    shift count to convert clusters into sectors
  5307.  06h    WORD    starting sector number of first FAT
  5308.  08h    BYTE    number of copies of FAT
  5309.  09h    WORD    number of directory entries
  5310.  0Bh    WORD    number of first data sector
  5311.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  5312.  0Fh    BYTE    sectors per FAT
  5313.  10h    WORD    starting sector of directory
  5314.  12h    WORD    address of allocation table
  5315. Note:    the DOS 1.0 table is the same except that the first and last fields
  5316.       are missing; see INT 21/AH=32h for the DOS 2+ version
  5317. --------D-2120-------------------------------
  5318. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  5319.     AH = 20h
  5320. Return: AL = 00h
  5321. Note:    corresponds to the CP/M BDOS function "get/set default user
  5322.       (sublibrary) number", which is meaningless under MS-DOS
  5323. SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
  5324. --------D-2121-------------------------------
  5325. INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
  5326.     AH = 21h
  5327.     DS:DX -> opened FCB (see AH=0Fh)
  5328. Return: AL = status
  5329.         00h successful
  5330.         01h end of file, no data read
  5331.         02h segment wrap in DTA, no data read
  5332.         03h end of file, partial record read
  5333.     [DTA] = record read from file
  5334. Notes:    the record is read from the current file position as specified by the
  5335.       random record and record size fields of the FCB
  5336.     the file position is not updated after reading the record
  5337.     if a partial record is read, it is zero-padded to the full size
  5338.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5339. SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh
  5340. --------D-2122-------------------------------
  5341. INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
  5342.     AH = 22h
  5343.     DS:DX -> opened FCB (see AH=0Fh)
  5344.     [DTA] = record to write
  5345. Return: AL = status
  5346.         00h successful
  5347.         01h disk full
  5348.         02h segment wrap in DTA
  5349. Notes:    the record is written to the current file position as specified by the
  5350.       random record and record size fields of the FCB
  5351.     the file position is not updated after writing the record
  5352.     if the record is located beyond the end of the file, the file is
  5353.       extended but the intervening data remains uninitialized
  5354.     if the record only partially fills a disk sector, it is copied to a
  5355.       DOS disk buffer to be written out to disk at a later time
  5356.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5357. SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
  5358. --------D-2123-------------------------------
  5359. INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
  5360.     AH = 23h
  5361.     DS:DX -> unopened FCB (see AH=0Fh), wildcards not allowed
  5362. Return: AL = status
  5363.         00h successful (matching file found)
  5364.         FCB random record field filled with size in records, rounded up
  5365.         to next full record
  5366.         FFh failed (no matching file found)
  5367. Notes:    not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5368.     MS-DOS returns nonsense is the FCB record number field is set to a very
  5369.       large positive number, and status FFh if negative; DR-DOS returns the
  5370.       correct file size in both cases
  5371. SeeAlso: AH=42h
  5372. --------D-2124-------------------------------
  5373. INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
  5374.     AH = 24h
  5375.     DS:DX -> opened FCB (see AH=0Fh)
  5376. Notes:    computes the random record number corresponding to the current record
  5377.       number and record size, then stores the result in the FCB
  5378.     normally used when switching from sequential to random access
  5379.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5380. SeeAlso: AH=21h,AH=27h,AH=42h
  5381. --------D-2125-------------------------------
  5382. INT 21 - DOS 1+ - SET INTERRUPT VECTOR
  5383.     AH = 25h
  5384.     AL = interrupt number
  5385.     DS:DX -> new interrupt handler
  5386. Notes:    this function is preferred over direct modification of the interrupt
  5387.       vector table
  5388.     some DOS extenders place an API on this function, as it is not
  5389.       directly meaningful in protected mode
  5390.     under DR-DOS 5.0+, this function does not use any of the DOS-internal
  5391.       stacks and may thus be called at any time
  5392.     Novell NetWare (except the new DOS Requester) monitors the offset of
  5393.       any INT 24 set, and if equal to the value at startup, substitutes
  5394.       its own handler to allow handling of network errors; this introduces
  5395.       the potential bug that any program whose INT 24 handler offset
  5396.       happens to be the same as COMMAND.COM's will not have its INT 24
  5397.       handler installed
  5398. SeeAlso: AX=2501h,AH=35h
  5399. --------E-212501-----------------------------
  5400. INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
  5401.     AX = 2501h
  5402.     SS = application's original SS or DS (FlashTek X-32VM)
  5403. Return: CF clear if successful
  5404.     CF set on error
  5405.         caller is operating on X-32 stack (FlashTek X-32VM)
  5406. Notes:    Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
  5407.       system calls.     Only available when directly using 386/DOS-Extender or
  5408.       a compatible DOS extender, or when using a product that was created
  5409.       using 386-DOS/Extender or a compatible
  5410.     this function is also supported by FlashTek X-32VM
  5411. SeeAlso: AH=30h"Phar Lap"
  5412. --------E-212502-----------------------------
  5413. INT 21 - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
  5414.     AX = 2502h
  5415.     CL = interrupt number
  5416. Return: CF clear
  5417.     ES:EBX = CS:EIP of protected-mode interrupt handler
  5418. Note:    this function is also supported by FlashTek X-32VM
  5419. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
  5420. --------E-212503-----------------------------
  5421. INT 21 - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
  5422.     AX = 2503h
  5423.     CL = interrupt number
  5424. Return: CF clear
  5425.     EBX = CS:IP of real-mode interrupt handler
  5426. Note:    this function is also supported by FlashTek X-32VM
  5427. SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
  5428. --------E-212504-----------------------------
  5429. INT 21 - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
  5430.     AX = 2504h
  5431.     CL = interrupt number
  5432.     DS:EDX = CS:EIP of protected-mode interrupt handler
  5433. Return: CF clear
  5434. Note:    this function is also supported by FlashTek X-32VM
  5435. SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
  5436. --------E-212505-----------------------------
  5437. INT 21 - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
  5438.     AX = 2505h
  5439.     CL = interrupt number
  5440.     EBX = CS:IP of real-mode interrupt handler
  5441. Return: CF clear
  5442. Note:    this function is also supported by FlashTek X-32VM
  5443. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
  5444. --------E-212506-----------------------------
  5445. INT 21 - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CONTRL IN PROT MODE
  5446.     AX = 2506h
  5447.     CL = interrupt number
  5448.     DS:EDX = CS:EIP of protected-mode interrupt handler
  5449. Return: CF clear
  5450. Notes:    this function modifies both the real-mode low-memory interrupt
  5451.       vector table and the protected-mode Interrupt Descriptor Table (IDT)
  5452.     interrupts occurring in real mode are resignaled in protected mode
  5453.     this function is also supported by FlashTek X-32VM
  5454. --------E-212507-----------------------------
  5455. INT 21 - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
  5456.     AX = 2507h
  5457.     CL = interrupt numbern
  5458.     DS:EDX = CS:EIP of protected-mode interrupt handler
  5459.     EBX = CS:IP of real-mode interrupt handler
  5460. Return: CF clear
  5461. Notes:    interrupts are disabled until both vectors have been modified
  5462.     this function is also supported by FlashTek X-32VM
  5463. SeeAlso: AX=2504h,AX=2505h
  5464. --------E-212508-----------------------------
  5465. INT 21 - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
  5466.     AX = 2508h
  5467.     BX = segment selector
  5468. Return: CF clear if successful
  5469.         ECX = linear base address of segment
  5470.     CF set if invalid segment selector
  5471. Note:    this function is also supported by FlashTek X-32VM
  5472. SeeAlso: AX=2509h
  5473. --------E-212509-----------------------------
  5474. INT 21 - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
  5475.     AX = 2509h
  5476.     EBX = linear address to convert
  5477. Return: CF clear if successful
  5478.         ECX = physical address (carry flag clear)
  5479.     CF set if linear address not mapped in page tables
  5480. SeeAlso: AX=2508h
  5481. --------E-212509-----------------------------
  5482. INT 21 - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
  5483.     AX = 2509h
  5484. Return: CF clear
  5485.     EAX high word = default DS
  5486.     AX = alias for 16-bit data segment
  5487.     BX = real mode code segment
  5488.     EDX high word = selector covering full 4GB address space
  5489.     DX = default SS
  5490.     ESI high word = PSP selector
  5491.     SI = environment selector
  5492. --------E-21250A-----------------------------
  5493. INT 21 - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
  5494.     AX = 250Ah
  5495.     ES = segment selector in the Local Descriptor Table (LDT) of segment
  5496.          to modify
  5497.     EBX = physical base address of memory to map (multiple of 4K)
  5498.     ECX = number of physical 4K pages to map
  5499. Return: CF clear if successful
  5500.         EAX = 32-bit offset in segment of mapped memory
  5501.     CF set on error
  5502.         EAX = error code
  5503.         08h insufficient memory to create page tables
  5504.         09h invalid segment selector
  5505. SeeAlso: INT 31/AX=0800h
  5506. --------E-21250C-----------------------------
  5507. INT 21 - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
  5508.     AX = 250Ch
  5509. Return: CF clear
  5510.     AL = base interrupt vector for IRQ0-IRQ7
  5511.     AH = base interrupt vector for IRQ8-IRQ15
  5512.     BL = interrupt vector for BIOS print screen function (Phar Lap only)
  5513. Note:    this function is also supported by FlashTek X-32VM
  5514. SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
  5515. --------E-21250D-----------------------------
  5516. INT 21 - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
  5517.     AX = 250Dh
  5518. Return: CF clear
  5519.     EAX = CS:IP of real-mode callback procedure that will call through
  5520.         from real mode to a protected-mode routine
  5521.     EBX = 32-bit real-mode address of intermode call data buffer
  5522.     ECX = size in bytes of intermode call data buffer
  5523.     ES:EDX = protected-mode address of intermode call data buffer
  5524. Notes:    this function is also supported by FlashTek X-32VM
  5525.     X-32VM guarantees the intermode buffer to be at least 4 KB
  5526. SeeAlso: AX=250Eh
  5527.  
  5528. Call real-mode callback with:
  5529.     STACK:    DWORD    offset to protected-mode code
  5530.         WORD    placeholder for protected-mode CS
  5531.         DWORD    pointer to selector structure (see below)
  5532.             or 0000h:0000h for defaults
  5533.         var    parameters for protected-mode procedure
  5534. Return: via FAR return
  5535.  
  5536. Format of selector structure:
  5537. Offset    Size    Description
  5538.  00h    WORD    protected-mode GS selector
  5539.  02h    WORD    protected-mode FS selector
  5540.  04h    WORD    protected-mode ES selector
  5541.  06h    WORD    protected-mode DS selector
  5542. --------E-21250E-----------------------------
  5543. INT 21 - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
  5544.     AX = 250Eh
  5545.     EBX = CS:IP of real-mode procedure to call
  5546.     ECX = number of two-byte words to copy from protected-mode stack
  5547.           to real-mode stack
  5548. Return: CF clear if successful
  5549.         all segment registers unchanged
  5550.         all general registers contain values set by real-mode procedure
  5551.         all other flags set as they were left by real-mode procedure
  5552.         stack unchanged
  5553.     CF set on error
  5554.         EAX = error code
  5555.         01h not enough real-mode stack space
  5556. Note:    this function is also supported by FlashTek X-32VM; under X-32VM, the
  5557.       call will fail if ECX > 0000003Fh
  5558. SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
  5559. --------E-21250F-----------------------------
  5560. INT 21 - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
  5561.     AX = 250Fh
  5562.     ES:EBX = 48-bit protected-mode address to convert
  5563. Return: CF clear if successful (address < 1MB)
  5564.         ECX = 32-bit real-mode MS-DOS address
  5565.     CF set on error (address >= 1MB)
  5566.         ECX = linear address
  5567. Note:    this function is also supported by FlashTek X-32VM
  5568. SeeAlso: AX=2510h
  5569. --------E-212510-----------------------------
  5570. INT 21 - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
  5571.     AX = 2510h
  5572.     EBX = CS:IP of real-mode procedure to call
  5573.     ECX = number of two-byte words to copy to protected-mode stack to
  5574.           real-mode stack
  5575.     DS:EDX -> pointer to parameter block (see below)
  5576. Return: CF clear if successful
  5577.         all segment registers unchanged,
  5578.         EDX unchanged
  5579.         all other general registers contain values set by real-mode proc
  5580.         all other flags are set as they were left by real-mode procedure
  5581.         real-mode register values are returned in the parameter block
  5582.     CF set on error
  5583.         EAX = error code
  5584.         01h not enough real-mode stack space
  5585. Note:    unlike most of the preceding 25xxh functions, this one is not
  5586.       supported by FlashTek X-32VM
  5587. SeeAlso: AX=250Eh,AX=250Fh
  5588.  
  5589. Format of parameter block:
  5590. Offset    Size    Description
  5591.  00h    WORD    real-mode DS value
  5592.  02h    WORD    real-mode ES value
  5593.  04h    WORD    real-mode FS value
  5594.  06h    WORD    real-mode GS value
  5595.  08h    DWORD    real-mode EAX value
  5596.  0Ch    DWORD    real-mode EBX value
  5597.  10h    DWORD    real-mode ECX value
  5598.  14h    DWORD    real-mode EDX value
  5599. --------E-212511-----------------------------
  5600. INT 21 - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
  5601.     AX = 2511h
  5602.     DS:EDX -> parameter block (see below)
  5603. Return: all segment registers unchanged
  5604.     EDX unchanged
  5605.     all other registers contain values set by the real-mode int handler
  5606.     the flags are set as they were left by the real-mode interrupt handler
  5607.     real-mode register values are returned in the parameter block
  5608. Note:    this function is also supported by FlashTek X-32VM
  5609. SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
  5610.  
  5611. Format of parameter block:
  5612. Offset    Size    Description
  5613.  00h    WORD    interrupt number
  5614.  02h    WORD    real-mode DS value
  5615.  04h    WORD    real-mode ES value
  5616.  06h    WORD    real-mode FS value
  5617.  08h    WORD    real-mode GS value
  5618.  0Ah    DWORD    real-mode EAX value
  5619.  0Eh    DWORD    real-mode EDX value
  5620. Note: all other real-mode values set from protected-mode registers
  5621. --------E-212512-----------------------------
  5622. INT 21 - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
  5623.     AX = 2512h
  5624.     DS:EDX -> pointer to ASCIIZ program name
  5625.     ES:EBX -> pointer to parameter block (see below)
  5626.     ECX = size in bytes of LDT buffer
  5627. Return: CF clear if successful
  5628.         EAX = number of segment descriptors in LDT
  5629.     CF set on error
  5630.         EAX = error code
  5631.         02h file not found or path invalid
  5632.         05h access denied
  5633.         08h insufficient memory
  5634.         0Ah environment invalid
  5635.         0Bh invalid file format
  5636.         80h LDT too small
  5637.  
  5638. Format of parameter block:
  5639. Offset    Size    Description
  5640. Input:
  5641.  00h    DWORD    32-bit offset of environment string
  5642.  04h    WORD    segment of environment string
  5643.  06h    DWORD    32-bit offset of command-tail string
  5644.  0Ah    WORD    segment of command-tail string
  5645.  0Ch    DWORD    32-bit offset of LDT buffer (size in ECX)
  5646.  10h    WORD    segment of LDT buffer
  5647. Output:
  5648.  12h    WORD    real-mode paragraph address of PSP (see also AH=26h)
  5649.  14h    WORD    real/protected mode flag
  5650.         0000h  real mode
  5651.         0001h  protected mode
  5652.  16h    DWORD    initial EIP value
  5653.  1Ah    WORD    initial CS value
  5654.  1Ch    DWORD    initial ESP value
  5655.  20h    WORD    initial SS value
  5656.  22h    WORD    initial DS value
  5657.  24h    WORD    initial ES value
  5658.  26h    WORD    initial FS value
  5659.  28h    WORD    initial GS value
  5660. --------E-212513-----------------------------
  5661. INT 21 - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
  5662.     AX = 2513h
  5663.     BX = segment selector of descriptor in GDT or LDT
  5664.     CL = access-rights byte for alias descriptor
  5665.     CH = use-type bit (USE16 or USE32) for alias descriptor
  5666. Return: CF clear if successful
  5667.         AX = segment selector for created alias
  5668.     CF set on error
  5669.         EAX = error code
  5670.         08h insufficient memory (can't grow LDT)
  5671.         09h invalid segment selector in BX
  5672. --------E-212514-----------------------------
  5673. INT 21 - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
  5674.     AX = 2514h
  5675.     BX = segment selector of descriptor in GDT or LDT
  5676.     CL = new access-rights byte
  5677.     CH = new use-type bit (USE16 or USE32)
  5678. Return: CF clear if successful
  5679.     CF set on error
  5680.         EAX = error code
  5681.         09h invalid selector in BX
  5682. SeeAlso: AX=2515h,INT 31/AX=0009h
  5683. --------E-212515-----------------------------
  5684. INT 21 - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
  5685.     AX = 2515h
  5686.     BX = segment selector of descriptor in GDT or LDT
  5687. Return: CF clear if successful
  5688.         CL = access-rights byte for segment
  5689.         CH = use-type bit (USE16 or USE32)
  5690.     ECX<16-31> destroyed
  5691.     CF set on error
  5692.         EAX = error code
  5693.         09h invalid segment selector in BX
  5694. SeeAlso: AX=2514h
  5695. --------E-212516-----------------------------
  5696. INT 21 - Phar Lap 386/DOS-Extender - FREE ALL MEMORY OWNED BY LDT
  5697.     AX = 2516h
  5698.     ???
  5699. Return: ???
  5700. --------E-212517-----------------------------
  5701. INT 21 - Phar Lap 386/DOS-Extender - GET INFO ON DOS DATA BUFFER
  5702.     AX = 2517h
  5703.     ???
  5704. Return: ???
  5705. --------E-212518-----------------------------
  5706. INT 21 - Phar Lap 386/DOS-Extender - SPECIFY HANDLER FOR MOVED SEGMENTS
  5707.     AX = 2518h
  5708.     ???
  5709. Return: ???
  5710. --------E-212519-----------------------------
  5711. INT 21 - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
  5712.     AX = 2519h
  5713. Return: CF clear
  5714.     EAX = error code
  5715.         0000h  no error
  5716.         0001h  out of physical memory
  5717.         0002h  out of swap space (unable to grow swap file)
  5718.         0003h  out of LDT entries and unable to grow LDT
  5719.         0004h  unable to change extended memory allocation mark
  5720.         FFFFFFFFh    paging disabled
  5721. Note:    VMM is the Virtual Memory Manager option
  5722. --------E-21251A-----------------------------
  5723. INT 21 - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
  5724.     AX = 251Ah
  5725.     EDX = number of 4k pages to lock
  5726.     if BL = 00h
  5727.         ECX = linear address of first page to lock
  5728.     if BL = 01h
  5729.         ES:ECX -> pointer to first page to lock
  5730. Return: CF clear if successful
  5731.     CF set on error
  5732.         EAX = error code
  5733.         08h insufficient memory
  5734.         09h invalid address range
  5735. SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
  5736. --------E-21251B-----------------------------
  5737. INT 21 - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
  5738.     AX = 251Bh
  5739.     EDX = number of pages to unlock
  5740.     if BL = 00h
  5741.         ECX = linear address of first page to unlock
  5742.     if BL = 01h
  5743.         ES:ECX -> pointer to first page to unlock
  5744. Return: CF clear if successful
  5745.     CF set on error
  5746.         EAX = error code
  5747.         09h invalid address range
  5748. SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
  5749. --------E-21251D-----------------------------
  5750. INT 21 - Phar Lap 386/DOS-Extender VMM - READ PAGE-TABLE ENTRY
  5751.     AX = 251Dh
  5752.     ???
  5753. Return: ???
  5754. SeeAlso: AX=251Eh,AX=EB00h,INT 31/AX=0506h
  5755. --------E-21251E-----------------------------
  5756. INT 21 - Phar Lap 386/DOS-Extender VMM - WRITE PAGE-TABLE ENTRY
  5757.     AX = 251Eh
  5758.     ???
  5759. Return: ???
  5760. SeeAlso: AX=251Dh,INT 31/AX=0507h
  5761. --------E-21251F-----------------------------
  5762. INT 21 - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
  5763.     AX = 251Fh
  5764.     ???
  5765. Return: ???
  5766. SeeAlso: AX=251Dh,AX=251Eh
  5767. --------E-212520-----------------------------
  5768. INT 21 - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
  5769.     AX = 2520h
  5770.     DS:EDX -> pointer to buffer at least 100 bytes in size (see below)
  5771.     BL = 0 (don't reset VM stats), 1 (reset VM stats)
  5772. Return: carry flag clear
  5773.  
  5774. Format of VM stats buffer:
  5775. Offset    Size    Description
  5776.  00h    DWORD    VM status
  5777.         0001h VM subsystem is present
  5778.         0000h VM not present
  5779.  04h    DWORD    "nconvpg" number of conventional memory pages available
  5780.  08h    DWORD    "nbimpg" number of Compaq built-in memory pages available
  5781.  0Ch    DWORD    "nextpg" total number of extended memory pages
  5782.  10h    DWORD    "extlim" extender memory pages limit
  5783.  14h    DWORD    "aphyspg" number of physical memory pages allocated to appl
  5784.  18h    DWORD    "alockpg" number of locked pages owned by application
  5785.  1Ch    DWORD    "sysphyspg" number physical memory pages allocated to system
  5786.  20h    DWORD    "nfreepg" number of free physical pages; approx if EMS VCPI
  5787.  24h    DWORD    linear address of beginning of application address space
  5788.  28h    DWORD    linear address of end of application address space
  5789.  2Ch    DWORD    number of seconds since last time VM stats were reset
  5790.  30h    DWORD    number of page faults since last time
  5791.  34h    DWORD    number of pages written to swap file since last time
  5792.  38h    DWORD    number of reclaimed pages (page faults on swapped pages)
  5793.  3Ch    DWORD    number of virtual pages allocated to the application
  5794.  40h    DWORD    size in pages of swap file
  5795.  44h    DWORD    number of system pages allocated with EMS calls
  5796.  48h    DWORD    minimum number of conventional memory pages
  5797.  4Ch    DWORD    maximum size in bytes to which swap file can be increased
  5798.  50h    DWORD    "vmflags" bit 0 = 1 if page fault in progress
  5799. ---v4.0+ ---
  5800.  54h  8 BYTEs    ???
  5801.  5Ch    DWORD    size in pages of largest free block of memory (including disk
  5802.         swap space)
  5803.  60h  4 BYTEs    ???
  5804. --------E-212521-----------------------------
  5805. INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEMORY USAGE
  5806.     AX = 2521h
  5807.     EBX = max 4k pages of physical extended memory which program may use
  5808. Return: CF clear if successful
  5809.        EBX = maximum limit in pages
  5810.        ECX = minimum limit in pages
  5811.     CF set on error
  5812.         EAX = error code
  5813.         08h insufficient memory or -nopage switch used
  5814. SeeAlso: AX=2522h
  5815. --------E-212522-----------------------------
  5816. INT 21 - Phar Lap 386/DOS-Extender VMM - SPECIFY ALTERNATE PAGE-FAULT HANDLER
  5817.     AX = 2522h
  5818.     ???
  5819. Return: ???
  5820. SeeAlso: AX=2523h
  5821. --------E-212523-----------------------------
  5822. INT 21 - Phar Lap 386/DOS-Extender VMM - SPECIFY OUT-OF-SWAP-SPACE HANDLER
  5823.     AX = 2523h
  5824.     ???
  5825. Return: ???
  5826. SeeAlso: AX=2522h
  5827. --------E-212524-----------------------------
  5828. INT 21 - Phar Lap 386/DOS-Extender VMM - INSTALL PAGE-REPLACEMENT HANDLERS
  5829.     AX = 2524h
  5830.     ???
  5831. Return: ???
  5832. --------E-212525-----------------------------
  5833. INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENTIONAL MEM USAGE
  5834.     AX = 2525h
  5835.     EBX = limit in 4k pages of physical conventional memory which program
  5836.           may use
  5837. Return: CF clear if successful
  5838.         EBX = maximum limit in pages
  5839.         ECX = minimum limit in pages
  5840.     CF set on error
  5841.         EAX = error code
  5842.         08h insufficient memory or -nopage switch used
  5843. SeeAlso: AX=2521h
  5844. --------E-212526-----------------------------C33!
  5845. INT 21 - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
  5846.     AX = 2526h
  5847.     ???
  5848. Return: ???
  5849. Note:    details not available at this time
  5850.  
  5851. Format of configuration buffer:
  5852. Offset    Size    Description
  5853.  00h    DWORD    flags 1
  5854.         bit 24: set if -NESTDPMI specified
  5855.         bit 25: set if -NONESTDPMI specified
  5856.         bit 26: set if -NODPMI specified
  5857.         bit 27: set if -NOPCDWEITEK specified
  5858. --------E-212529-----------------------------C33!
  5859. INT 21 - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
  5860.     AX = 2529h
  5861.     ???
  5862. Return: ES:EBX -> parameter block
  5863.     ???
  5864. Note:    details not available at this time
  5865.  
  5866. Format of parameter block:
  5867. Offset    Size    Description
  5868.  00h 28 BYTEs    ???
  5869.  1Ch    DWORD    flags
  5870.         bit 0: child linked with -UNPRIVILEGED
  5871.         bits 1-31 reserved
  5872. --------E-21252B-----------------------------
  5873. INT 21 - FlashTek X-32VM - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
  5874.     AX = 252Bh
  5875.     BH = function
  5876.         05h lock pages
  5877.         06h unlock pages
  5878.     BL = address type
  5879.         00h linear address
  5880.         ECX = linear start address of memory region
  5881.         01h segmented address
  5882.         ES:ECX -> start of memory region
  5883.     EDX = size of memory region in bytes
  5884. Return: CF clear if successful
  5885.     CF set on error
  5886. Note:    if X-32 is not using virtual memory, this function always succeeds
  5887. --------E-21252BBH09-------------------------C33!
  5888. INT 21 - Phar Lap 386/DOS-Extender v4.1 - GET PAGE TABLE ENTRY/PAGE TABLE INFO
  5889.     AX = 252Bh
  5890.     BH = 09h
  5891.     BL = subfunction
  5892.         00h get page table entry by linear address
  5893.         ECX = linear address for which to get page table entry
  5894.         01h get page table entry by logical address
  5895.         ES:ECX = address for which to get page table entry
  5896. Return: CF clear if successful
  5897.         EAX = page table entry
  5898.         EBX = additional page table information
  5899.     CF set on error
  5900.         EAX = error code
  5901.         0009h invalid address
  5902.         0082h running under DPMI
  5903. SeeAlso: AX=252Bh/BH=0Ah
  5904. --------E-21252BBH0A-------------------------C33!
  5905. INT 21 - Phar Lap 386/DOS-Extender v4.1 - SET PAGE TABLE ENTRY/PAGE TABLE INFO
  5906.     AX = 252Bh
  5907.     BH = 0Ah
  5908.     BL = subfunction
  5909.         00h set page table entry for linear address
  5910.         ECX = linear address for which to get page table entry
  5911.         01h set page table entry for logical address
  5912.         ES:ECX = address for which to get page table entry
  5913.     ESI = page table entry
  5914.     EDI = additional page table information
  5915. Return: CF clear if successful
  5916.     CF set on error
  5917.         EAX = error code
  5918.         0009h invalid address
  5919.         0082h running under DPMI
  5920. SeeAlso: AX=252Bh/BH=09h
  5921. --------E-21252BBH0B-------------------------C33!
  5922. INT 21 - Phar Lap 386/DOS-Extender v4.1 - MAP DATA FILE AT FILE OFFSET
  5923.     AX = 252Bh
  5924.     BH = 0Bh
  5925.     BL = subfunction
  5926.         00h by linear address
  5927.         ECX = linear address at which to map data file
  5928.         01h by logical address
  5929.         ES:ECX = logical address at which to map data file
  5930.     EDX = number of bytes to map
  5931.     DS:ESI -> mapping structure (see below)
  5932.     DS:EDI -> ASCIZ filename
  5933. Return: CF clear if successful
  5934.     CF set on error
  5935.         EAX = error code
  5936.         0002h file error
  5937.             ECX = phase (01h opening file, 02h seeking, 03h reading)
  5938.             EDX = error code returned by DOS
  5939.         0009h invalid address
  5940.         0081h invalid parameters or 386|VMM not present
  5941.         0086h all 386|VMM file handles already in use
  5942. SeeAlso: AX=252Bh/BH=09h
  5943.  
  5944. Format of mapping structure:
  5945. Offset    Size    Description
  5946.  00h    DWORD    starting file offset to be mapped
  5947.  04h    DWORD    DOS file access and sharing modes (see INT 21/AH=3Dh)
  5948. --------E-212532-----------------------------
  5949. INT 21 - FlashTek X-32VM - GET EXCEPTION HANDLER VECTOR
  5950.     AX = 2532h
  5951.     CL = exception number (00h-0Fh)
  5952. Return: CF clear if successful
  5953.         ES:EBX = CS:EIP of current exception handler
  5954.     CF set on error (CL > 0Fh)
  5955. SeeAlso: AX=2533h
  5956. --------E-212533-----------------------------
  5957. INT 21 - FlashTek X-32VM - SET EXCEPTION HANDLER VECTOR
  5958.     AX = 2533h
  5959.     CL = exception number (00h-0Fh)
  5960.     DS:EDX = CS:EIP of new exception handler
  5961. Return: CF clear if successful
  5962.     CF set on error (CL > 0Fh)
  5963. SeeAlso: AX=2532h
  5964. --------E-212534-----------------------------C33!
  5965. INT 21 - Phar Lap 386/DOS-Extender v4.0+ - GET INTERRUPT FLAG
  5966.     AX = 2534h
  5967.     ???
  5968. Return: ???
  5969. Note:    details not available at this time
  5970. --------E-212535-----------------------------C33!
  5971. INT 21 - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE SYSTEM REGISTERS
  5972.     AX = 2535h
  5973.     ???
  5974. Return: ???
  5975. Notes:    only available under MS Windows if PHARLAP.386 VDD is installed
  5976.     details not available at this time
  5977. --------E-21253C-----------------------------C33!
  5978. INT 21 - Phar Lap 386/DOS-Extender v4.0+ - SHRINK 386|VMM SWAP FILE
  5979.     AX = 253Ch
  5980.     ???
  5981. Return: ???
  5982. Note:    details not available at this time
  5983. --------E-2F253D-----------------------------C33!
  5984. INT 2F - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
  5985.     AX = 253Dh
  5986.     BL = interrupt number
  5987.     ECX = direction (0 = read, 1 = write)
  5988.     DS:EDX -> 8-byte buffer for descriptor
  5989. Return: CF clear if successful
  5990.         DS:EDX filled if reading
  5991.     CF set on error
  5992.         EAX = error code (0082h if running under DPMI)
  5993. Desc:    access hardware-level IDT rather than the internal 386/DOS-Extender
  5994.       shadow IDT
  5995. Notes:    this call will always fail under DPMI because it is not possible to
  5996.       access the IDT
  5997.     the descriptor is not checked when writing
  5998.     this call can normally be used only by programs running in ring 0
  5999.       because the processor does not allow an interrupt to be vectored to
  6000.       a less privileged ring
  6001. --------E-2125C0-----------------------------
  6002. INT 21 - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
  6003.     AX = 25C0h
  6004.     BX = number of 16-byte paragraphs of MS-DOS memory requested
  6005. Return: CF clear if successful
  6006.         AX = real-mode paragraph address of memory
  6007.     CF set on error
  6008.         AX = error code
  6009.         07h MS-DOS memory control blocks destroyed
  6010.         08h insufficient memory
  6011.         BX = size in paragraphs of largest available memory block
  6012. SeeAlso: AX=25C1h,AX=25C2h
  6013. --------E-2125C1-----------------------------
  6014. INT 21 - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
  6015.     AX = 25C1h
  6016.     CX = real-mode paragraph address of memory block to free
  6017. Return: CF clear if successful
  6018.         EAX destroyed
  6019.     CF set on error
  6020.         AX = error code
  6021.         07h MS-DOS memory control blocks destroyed
  6022.         09h invalid memory block address in CX
  6023. SeeAlso: AX=25C0h,AX=25C2h
  6024. --------E-2125C2-----------------------------
  6025. INT 21 - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
  6026.     AX = 25C2h
  6027.     BX = new requested block size in paragraphs
  6028.     CX = real-mode paragraph address of memory block to modify
  6029. Return: CF clear if successful
  6030.         EAX destroyed
  6031.     CF set on error
  6032.         AX = error code
  6033.         07h MS-DOS memory control blocks destroyed
  6034.         08h insufficient memory
  6035.         09h invalid memory block address in CX
  6036.         BX = size in paragraphs of largest available memory block
  6037. SeeAlso: AX=25C0h,AX=25C1h
  6038. --------E-2125C3-----------------------------
  6039. INT 21 - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
  6040.     AX = 25C3h
  6041.     ES:EBX -> pointer to parameter block (see below)
  6042.     DS:EDX -> pointer to ASCIIZ program filename
  6043. Return: CF clear if successful
  6044.         all registers unchanged
  6045.     CF set on error
  6046.         EAX = error code
  6047.         01h function code in AL is invalid ???
  6048.         02h file not found or path invalid
  6049.         05h access denied
  6050.         08h insufficient memory to load program
  6051.         0Ah environment invalid
  6052.         0Bh invalid file format
  6053.  
  6054. Format of parameter block:
  6055. Offset    Size    Description
  6056.  00h    DWORD    32-bit offset of environment string
  6057.  04h    WORD    segment selector of environment string
  6058.  06h    DWORD    32-bit offset of command-tail string
  6059.  0Ah    WORD    segment selector of command-tail string
  6060. --------D-2126-------------------------------
  6061. INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
  6062.     AH = 26h
  6063.     DX = segment at which to create PSP (see below)
  6064. Notes:    new PSP is updated with memory size information; INTs 22h, 23h, 24h
  6065.       taken from interrupt vector table
  6066.     (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
  6067.       copy
  6068. SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
  6069.  
  6070. Format of PSP:
  6071. Offset    Size    Description
  6072.  00h  2 BYTEs    INT 20 instruction for CP/M CALL 0 program termination
  6073.         the CDh 20h here is often used as a signature for a valid PSP
  6074.  02h    WORD    segment of first byte beyond memory allocated to program
  6075.  04h    BYTE    unused filler
  6076.  05h    BYTE    CP/M CALL 5 service request (FAR JMP to 000C0h)
  6077.         BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh point at 000BEh
  6078.  06h    WORD    CP/M compatibility--size of first segment for .COM files
  6079.  08h  2 BYTEs    remainder of FAR JMP at 05h
  6080.  0Ah    DWORD    stored INT 22 termination address
  6081.  0Eh    DWORD    stored INT 23 control-Break handler address
  6082.  12h    DWORD    DOS 1.1+ stored INT 24 critical error handler address
  6083.  16h    WORD    segment of parent PSP
  6084.  18h 20 BYTEs    DOS 2+ Job File Table, one byte per file handle, FFh = closed
  6085.  2Ch    WORD    DOS 2+ segment of environment for process
  6086.  2Eh    DWORD    DOS 2+ process's SS:SP on entry to last INT 21 call
  6087.  32h    WORD    DOS 3+ number of entries in JFT (default 20)
  6088.  34h    DWORD    DOS 3+ pointer to JFT (default PSP:0018h)
  6089.  38h    DWORD    DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
  6090.         used by SHARE in DOS 3.3
  6091.  3Ch    BYTE    apparently unused by DOS versions <= 6.00
  6092.  3Dh    BYTE    apparently used by some versions of APPEND
  6093.  3Eh    BYTE    (Novell NetWare) flag: next byte initialized if CEh
  6094.  3Fh    BYTE    (Novell Netware) Novell task number if previous byte is CEh
  6095.  40h  2 BYTEs    DOS 5+ version to return on INT 21/AH=30h
  6096.  42h    WORD    (MSWin3) selector of next PSP (PDB) in linked list
  6097.         Windows keeps a linked list of Windows programs only
  6098.  44h  4 BYTEs    unused by DOS versions <= 6.00
  6099.  48h    BYTE    (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
  6100.  49h  7 BYTEs    unused by DOS versions <= 6.00
  6101.  50h  3 BYTEs    DOS 2+ service request (INT 21/RETF instructions)
  6102.  53h  2 BYTEs    unused in DOS versions <= 6.00
  6103.  55h  7 BYTEs    unused in DOS versions <= 6.00; can be used to make first FCB
  6104.         into an extended FCB
  6105.  5Ch 16 BYTEs    first default FCB, filled in from first commandline argument
  6106.         overwrites second FCB if opened
  6107.  6Ch 16 BYTEs    second default FCB, filled in from second commandline argument
  6108.         overwrites beginning of commandline if opened
  6109.  7Ch  4 BYTEs    unused
  6110.  80h 128 BYTEs    commandline / default DTA
  6111.         command tail is BYTE for length of tail, N BYTEs for the tail,
  6112.         followed by a BYTE containing 0Dh
  6113. Notes:    in DOS v3+, the limit on simultaneously open files may be increased by
  6114.       allocating memory for a new open file table, filling it with FFh,
  6115.       copying the first 20 bytes from the default table, and adjusting the
  6116.       pointer and count at 34h and 32h.  However, DOS will only copy the
  6117.       first 20 file handles into a child PSP (including the one created on
  6118.       EXEC).
  6119.     network redirectors based on the original MS-Net implementation use
  6120.       values of 80h-FEh in the open file table to indicate remote files;
  6121.       Novell NetWare reportedly also uses values of 80h-FEh
  6122.     MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
  6123.       high; the first FCB is empty and the second contains the first
  6124.       parameter
  6125.     some DOS extenders place protected-mode values in various PSP fields
  6126.       such as the "parent" field, which can confuse PSP walkers.  Always
  6127.       check either for the CDh 20h signature or that the suspected PSP is
  6128.       at the beginning of a memory block which owns itself (the preceding
  6129.       paragraph should be a valid MCB with "owner" the same as the
  6130.       suspected PSP).
  6131.     Novell NetWare updates the fields at offsets 3Eh and 3Fh without
  6132.       checking that a legal PSP segment is current; see AH=50h for further
  6133.       discussion
  6134.  
  6135. Format of environment block:
  6136. Offset    Size    Description
  6137.  00h  N BYTEs    first environment variable, ASCIZ string of form "var=value"
  6138.       N BYTEs    second environment variable, ASCIZ string
  6139.     ...
  6140.       N BYTEs    last environment variable, ASCIZ string of form "var=value"
  6141.     BYTE    00h
  6142. ---DOS 3+---
  6143.     WORD    number of strings following environment (normally 1)
  6144.       N BYTEs    ASCIZ full pathname of program owning this environment
  6145.         other strings may follow
  6146. --------D-2127-------------------------------
  6147. INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
  6148.     AH = 27h
  6149.     CX = number of records to read
  6150.     DS:DX -> opened FCB (see AH=0Fh)
  6151. Return: AL = status
  6152.         00h successful, all records read
  6153.         01h end of file, no data read
  6154.         02h segment wrap in DTA, no data read
  6155.         03h end of file, partial read
  6156.     [DTA] = records read from file
  6157.     CX = number of records read (return AL = 00h or 03h)
  6158. Notes:    read begins at current file position as specified in FCB; the file
  6159.       position is updated after reading
  6160.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  6161. SeeAlso: AH=21h,AH=28h,AH=3Fh
  6162. --------D-2128-------------------------------
  6163. INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
  6164.     AH = 28h
  6165.     CX = number of records to write
  6166.     DS:DX -> opened FCB (see AH=0Fh)
  6167.     [DTA] = records to write
  6168. Return: AL = status
  6169.         00h successful
  6170.         01h disk full or file read-only
  6171.         02h segment wrap in DTA
  6172.     CX = number of records written
  6173. Notes:    write begins at current file position as specified in FCB; the file
  6174.       position is updated after writing
  6175.     if CX = 0000h on entry, no data is written; instead the file size is
  6176.       adjusted to be the same as the file position specified by the random
  6177.       record and record size fields of the FCB
  6178.     if the data to be written is less than a disk sector, it is copied into
  6179.       a DOS disk buffer, to be written out to disk at a later time
  6180.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  6181. SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h
  6182. --------D-2129-------------------------------
  6183. INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
  6184.     AH = 29h
  6185.     AL = parsing options (see below)
  6186.     DS:SI -> filename string (both '*' and '?' wildcards OK)
  6187.     ES:DI -> buffer for unopened FCB
  6188. Return: AL = result code
  6189.         00h successful parse, no wildcards encountered
  6190.         01h successful parse, wildcards present
  6191.         FFh failed (invalid drive specifier)
  6192.     DS:SI -> first unparsed character
  6193.     ES:DI buffer filled with unopened FCB (see AH=0Fh)
  6194. Notes:    asterisks expanded to question marks in the FCB
  6195.     all processing stops when a filename terminator is encountered
  6196.     cannot be used with filespecs which include a path (DOS 2+)
  6197.     Novell NetWare monitors the result code since an 'invalid drive' may
  6198.       signal an attempt to reconnect a network drive; if there are no
  6199.       connections to the specified drive, NetWare attempts to build a
  6200.       connection and map the drive to the SYS:LOGIN directory
  6201. SeeAlso: AH=0Fh,AH=16h,AH=26h
  6202.  
  6203. Bitfields for parsing options:
  6204.  bit 0    skip leading separators
  6205.  bit 1    use existing drive number in FCB if no drive is specified, instead of
  6206.         setting field to zero
  6207.  bit 2    use existing filename in FCB if no base name is specified, instead of
  6208.         filling field with blanks
  6209.  bit 3    use existing extension in FCB if no extension is specified, instead of
  6210.         filling field with blanks
  6211.  bits 4-7 reserved (0)
  6212. --------D-212A-------------------------------
  6213. INT 21 - DOS 1+ - GET SYSTEM DATE
  6214.     AH = 2Ah
  6215. Return: CX = year (1980-2099)
  6216.     DH = month
  6217.     DL = day
  6218. ---DOS 1.10+---
  6219.     AL = day of week (00h=Sunday)
  6220. SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h,INT 1A/AH=04h,INT 2F/AX=120Dh
  6221. --------D-212B-------------------------------
  6222. INT 21 - DOS 1+ - SET SYSTEM DATE
  6223.     AH = 2Bh
  6224.     CX = year (1980-2099)
  6225.     DH = month
  6226.     DL = day
  6227. Return: AL = status
  6228.         00h successful
  6229.         FFh invalid date, system date unchanged
  6230. Note:    DOS 3.3+ also sets CMOS clock
  6231. SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
  6232. --------E-212B--CX4149-----------------------
  6233. INT 21 - AI Architects - ??? - INSTALLATION CHECK
  6234.     AH = 2Bh
  6235.     CX = 4149h ('AI')
  6236.     DX = 413Fh ('A?')
  6237. Return: AL <> FFh if installed
  6238. Note:    Borland's TKERNEL makes this call
  6239. --------c-212B--CX4358-----------------------
  6240. INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
  6241.     AH = 2Bh
  6242.     CX = 4358h ('CX')
  6243. Return: AL = FFh if PC-Kwik/PC-Cache not installed
  6244.     AL = 00h if installed
  6245.         CF clear
  6246.         CX = 6378h ('cx')
  6247.         BX = ???
  6248.         DX = version (DH = major version, DL = binary minor version)
  6249. Note:    PC Tools PC-Cache v5.x and Qualitas Qcache v4.00 are OEM versions of
  6250.       Super PC-Kwik, and thus support this call (PC-Cache 5.1 corresponds
  6251.       to PC-Kwik v3.20)
  6252. SeeAlso: INT 13/AH=A0h,INT 13/AH=B0h,INT 16/AX=FFA5h/CX=1111h
  6253. Index:    PC-Cache;installation check|Qualitas Qcache;installation check
  6254. Index:    installation check;PC-Cache 5.x|installation check;Qualitas Qcache
  6255. --------Q-212B--CX4445-----------------------
  6256. INT 21 - DESQview - INSTALLATION CHECK
  6257.     AH = 2Bh
  6258.     CX = 4445h ('DE')
  6259.     DX = 5351h ('SQ')
  6260.     AL = subfunction (DV v2.00+)
  6261.         01h get version
  6262.         Return: BX = version (BH = major, BL = minor)
  6263.         Note: early copies of v2.00 return 0002h
  6264.         02h get shadow buffer info, and start shadowing
  6265.         Return: BH = rows in shadow buffer
  6266.             BL = columns in shadow buffer
  6267.             DX = segment of shadow buffer
  6268.         04h get shadow buffer info
  6269.         Return: BH = rows in shadow buffer
  6270.             BL = columns in shadow buffer
  6271.             DX = segment of shadow buffer
  6272.         05h stop shadowing
  6273. Return: AL = FFh if DESQview not installed
  6274. Notes:    in DESQview v1.x, there were no subfunctions; this call only identified
  6275.       whether or not DESQview was loaded.  DESQview v2.52 performs function
  6276.       01h for all subfunction requests 0Ch and higher and appears to ignore
  6277.       all lower-numbered functions not listed here.
  6278.     DESQview versions 2.5x are part of DESQview/X v1.0x.
  6279. BUG:    subfunction 05h does not appear to work correctly in DESQview 2.52
  6280. SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
  6281. --------U-212B--CX454C-----------------------
  6282. INT 21 - ELRES v1.1 - INSTALLATION CHECK
  6283.     AH = 2Bh
  6284.     CX = 454Ch ('EL')
  6285.     DX = 5253h ('RS')
  6286. Return: ES:BX -> ELRES history structure (see below)
  6287.     DX = DABEh (signature, DAve BEnnett)
  6288. Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
  6289.       Bennett which stores recent errorlevel values, allows them to be
  6290.       retrieved for use in batch files, and can place them in an
  6291.       environment variable
  6292. SeeAlso: AH=4Bh"ELRES",AH=4Dh
  6293.  
  6294. Format of ELRES history structure:
  6295. Offset    Size    Description
  6296.  00h    WORD    number of return codes which can be stored by following buffer
  6297.  02h    WORD    current position in buffer (treated as a ring)
  6298.  04h  N BYTEs    ELRES buffer
  6299. --------T-212B01CX5441-----------------------
  6300. INT 21 - TAME v2.10+ - INSTALLATION CHECK
  6301.     AX = 2B01h
  6302.     CX = 5441h ('TA')
  6303.     DX = 4D45h ('ME')
  6304. ---v2.60---
  6305.     BH = ???
  6306.         00h skip ???, else do
  6307. Return: AL = 02h if installed
  6308.     ES:DX -> data area in TAME-RES (see below)
  6309. Program: TAME is a shareware program by David G. Thomas which gives up CPU time
  6310.       to other partitions under a multitasker when the current partition's
  6311.       program incessantly polls the keyboard or system time
  6312.  
  6313. Format of TAME 2.10-2.20 data area:
  6314. Offset    Size    Description
  6315.  00h    BYTE    data structure minor version number (01h in TAME 2.20)
  6316.  01h    BYTE    data structure major version number (07h in TAME 2.20)
  6317.  02h    DWORD    number of task switches
  6318.  06h    DWORD    number of keyboard polls
  6319.  0Ah    DWORD    number of time polls
  6320.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  6321.  12h    DWORD    original INT 10h
  6322.  16h    DWORD    original INT 14h
  6323.  1Ah    DWORD    original INT 15h
  6324.  1Eh    DWORD    original INT 16h
  6325.  22h    DWORD    original INT 17h
  6326.  26h    DWORD    original INT 21h
  6327.  2Ah    DWORD    original INT 28h
  6328.  2Eh    WORD    offset of TAME INT 10h handler
  6329.  30h    WORD    offset of TAME INT 14h handler
  6330.  32h    WORD    offset of TAME INT 15h handler
  6331.  34h    WORD    offset of TAME INT 16h handler
  6332.  36h    WORD    offset of TAME INT 17h handler
  6333.  38h    WORD    offset of TAME INT 21h handler
  6334.  3Ah    WORD    offset of TAME INT 28h handler
  6335.  3Ch    WORD    X in /max:X,Y or /freq:X,Y
  6336.  3Eh    WORD    Y in /max:X,Y or /freq:X,Y
  6337.  40h    WORD    number of polls remaining before next task switch
  6338.  42h    WORD    /KEYIDLE value
  6339.  44h    BYTE    interrupts already grabbed by TAME (see below)
  6340.  45h    BYTE    flags for interrupts which may be acted on (same bits as above)
  6341.  46h    BYTE    TAME enabled (01h) or disabled (00h)
  6342.  47h    BYTE    /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
  6343.  48h    BYTE    /NOTIMER (01h) or /TIMER (00h)
  6344.  49h    BYTE    window or task number for this task
  6345.  4Ah    BYTE    multitasker type (see below)
  6346.  4Bh    BYTE    type of task switching selected
  6347.         bit 0: DESQview???
  6348.         bit 1: DoubleDOS???
  6349.         bit 2: TopView???
  6350.         bit 3: KeySwitch
  6351.         bit 4: HLT instruction
  6352.  4Ch    BYTE    ???
  6353.  4Dh    BYTE    flags
  6354.         bit 1: /FREQ instead of /MAX
  6355.  4Eh    BYTE    /FG: value
  6356.  4Fh    BYTE    task switches left until next FGONLY DESQview API call
  6357.  50h    BYTE    ???
  6358.  
  6359. Bitfields for interrupts already grabbed by TAME:
  6360.  bit 0    INT 10h
  6361.  bit 1    INT 14h
  6362.  bit 2    INT 15h
  6363.  bit 3    INT 16h
  6364.  bit 4    INT 17h
  6365.  bit 5    INT 21h
  6366.  bit 6    INT 28h
  6367.  
  6368. Values for multitasker type:
  6369.  01h    DESQview
  6370.  02h    DoubleDOS
  6371.  03h    TopView
  6372.  04h    OmniView
  6373.  05h    VM/386
  6374.  
  6375. Bitfields for type of task switching selected:
  6376.  bit 0    DESQview
  6377.  bit 1    DoubleDOS
  6378.  bit 2    TopView
  6379.  bit 3    OmniView
  6380.  bit 4    KeySwitch
  6381.  bit 5    HLT instruction
  6382.  
  6383. Format of TAME 2.30 data area:
  6384. Offset    Size    Description
  6385.  00h    BYTE    data structure minor version number (02h in TAME 2.30)
  6386.  01h    BYTE    data structure major version number (0Ah in TAME 2.30)
  6387.  02h    DWORD    number of task switches
  6388.  06h    DWORD    number of keyboard polls
  6389.  0Ah    DWORD    number of time polls
  6390.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  6391.  12h    DWORD    time of last /CLEAR or TAME-RES load
  6392.  16h    DWORD    time yielded
  6393.  1Ah    DWORD    time spent polling
  6394.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  6395.  22h    DWORD    original INT 10h
  6396.  26h    DWORD    original INT 14h
  6397.  2Ah    DWORD    original INT 15h
  6398.  2Eh    DWORD    original INT 16h
  6399.  32h    DWORD    original INT 17h
  6400.  36h    DWORD    original INT 21h
  6401.  3Ah    DWORD    original INT 28h
  6402.  3Eh    WORD    offset of TAME INT 10h handler
  6403.  40h    WORD    offset of TAME INT 14h handler
  6404.  42h    WORD    offset of TAME INT 15h handler
  6405.  44h    WORD    offset of TAME INT 16h handler
  6406.  46h    WORD    offset of TAME INT 17h handler
  6407.  48h    WORD    offset of TAME INT 21h handler
  6408.  4Ah    WORD    offset of TAME INT 28h handler
  6409.  4Ch    WORD    X in /max:X,Y or /freq:X,Y
  6410.  4Eh    WORD    Y in /max:X,Y or /freq:X,Y
  6411.  50h    WORD    number of polls remaining before next task switch
  6412.  52h    WORD    /KEYIDLE value
  6413.  54h    WORD    /FG: value
  6414.  56h    WORD    task switches left until next FGONLY DESQview API call
  6415.  58h    WORD    multitasker version
  6416.  5Ah    WORD    virtual screen segment
  6417.  5Ch    BYTE    interrupts already grabbed by TAME (see above)
  6418.  5Dh    BYTE    flags for interrupts which may be acted on (same bits as above)
  6419.  5Eh    BYTE    window or task number for this task
  6420.  5Fh    BYTE    multitasker type (see above)
  6421.  60h    BYTE    type of task switching selected (bit flags) (see above)
  6422.  61h    BYTE    watch_DOS
  6423.  62h    BYTE    bit flags
  6424.         bit 0: TAME enabled
  6425.         bit 1: /FREQ instead of /MAX (counts in 3Ch and 3Eh per tick)
  6426.         bit 2: /TIMEPOLL
  6427.         bit 3: /KEYPOLL
  6428.         bit 4: inhibit timer
  6429.         bit 5: enable status monitoring
  6430.  63h    BYTE    old status
  6431.  64h    WORD    signature DA34h
  6432.  
  6433. Format of TAME 2.60 data area:
  6434. Offset    Size    Description
  6435.  00h    BYTE    data structure minor version number (02h in TAME 2.60)
  6436.  01h    BYTE    data structure major version number (0Bh in TAME 2.60)
  6437.  02h    DWORD    number of task switches
  6438.  06h    DWORD    number of keyboard polls
  6439.  0Ah    DWORD    number of time polls
  6440.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  6441.  12h    DWORD    time of last /CLEAR or TAME-RES load
  6442.  16h    DWORD    time yielded
  6443.  1Ah    DWORD    time spent polling
  6444.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  6445.  22h  4 BYTEs    ???
  6446.  26h    DWORD    original INT 10h
  6447.  2Ah    DWORD    original INT 14h
  6448.  2Eh    DWORD    original INT 15h
  6449.  32h    DWORD    original INT 16h
  6450.  36h    DWORD    original INT 17h
  6451.  3Ah    DWORD    original INT 21h
  6452.  3Eh    DWORD    original INT 28h
  6453.  42h    WORD    offset of TAME INT 10h handler
  6454.  44h    WORD    offset of TAME INT 14h handler
  6455.  46h    WORD    offset of TAME INT 15h handler
  6456.  48h    WORD    offset of TAME INT 16h handler
  6457.  4Ah    WORD    offset of TAME INT 17h handler
  6458.  4Ch    WORD    offset of TAME INT 21h handler
  6459.  4Eh    WORD    offset of TAME INT 28h handler
  6460.  50h    WORD    X in /max:X,Y or /freq:X,Y
  6461.  52h    WORD    Y in /max:X,Y or /freq:X,Y
  6462.  54h    WORD    number of polls remaining before next task switch
  6463.  56h    WORD    /KEYIDLE value
  6464.  58h  4 BYTEs    ???
  6465.  5Ch    WORD    X in /boost:X,Y
  6466.  5Eh    WORD    Y in /boost:X,Y
  6467.  60h    WORD    /FG: value
  6468.  62h    WORD    task switches remaining until next FGONLY DESQview API call
  6469.  64h    WORD    multitasker version ???
  6470.  66h    WORD    virtual screen segment
  6471.  68h    BYTE    interrupts already grabbed by TAME (see above)
  6472.  69h    BYTE    flags for interrupts which may be acted on (same bits as above)
  6473.  6Ah    BYTE    window or task number for this task
  6474.  6Bh    BYTE    multitasker type (see above)
  6475.  6Ch    BYTE    type of task switching selected (bit flags) (see above)
  6476.  6Dh    BYTE    watch_DOS
  6477.  6Eh    BYTE    bit flags
  6478.         bit 0: TAME enabled
  6479.         bit 1: /FREQ instead of /MAX (counts in 50h and 52h per tick)
  6480.         bit 2: /TIMEPOLL
  6481.         bit 3: /KEYPOLL
  6482.         bit 4: inhibit timer
  6483.         bit 5: enable status monitoring
  6484.  6Fh    BYTE    old status
  6485.  70h    WORD    signature DA34h
  6486. --------R-212B44BX4D41-----------------------
  6487. INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
  6488.     AX = 2B44h ('D')
  6489.     BX = 4D41h ('MA')
  6490.     CX = 7063h ('pc')
  6491.     DX = 4157h ('AW')
  6492. Return: AX = 4F4Bh ('OK') if large host resident
  6493.        = 6F6Bh ('ok') if small host resident
  6494.     CX:DX -> API entry point
  6495. SeeAlso: INT 16/AH=79h
  6496.  
  6497. Call API entry point with:
  6498.     AX = 0000h get pcANYWHERE IV version
  6499.         DS:SI -> BYTE buffer for host type code
  6500.         Return: AH = version number
  6501.             AL = revision number
  6502.             DS:DI buffer byte filled with
  6503.             00h full-featured host
  6504.             01h limited-feature LAN host
  6505.             other API may not be supported
  6506.     AX = 0001h initialize operation
  6507.         DS:SI -> initialization request structure (see below)
  6508.         Return: AX = function status (see below)
  6509.     AX = 0002h get status
  6510.         Return: AH = current operating mode (see init req structure below)
  6511.             AL = current connection status
  6512.             bit 0: a physical connection is active
  6513.             bit 1: remove screen updating is active
  6514.             bit 2: connection checking is active
  6515.             bit 3: hot key detection is active
  6516.             bit 4: background file transfer is active
  6517.     AX = 0003h suspend remote screen updates
  6518.         Return: AX = function status (see below)
  6519.     AX = 0004h resume screen updates
  6520.         Return: AX = function status (see below)
  6521.     AX = 0005h end current remote access session
  6522.         DS:SI -> termination request structure (see below)
  6523.         Return: AX = function status (see below)
  6524.     AX = 0006h remove pcANYWHERE IV from memory
  6525.         Return: AX = status
  6526.             0000h successful
  6527.             FFD2h unable to release allocated memory
  6528.             FFD1h unable to release interrupt vectors
  6529.     AX = 8000h read data from communications channel
  6530.         DS:BX -> buffer
  6531.         CX = buffer size
  6532.         Return: AX >= number of characters read/available
  6533.             AX < 0 on error
  6534.     AX = 8001h write data to communications channel
  6535.         DS:BX -> buffer
  6536.         CX = buffer size
  6537.         Return: AX >= number of characters written
  6538.             AX < 0 on error
  6539.     AX = 8002h get connection status
  6540.         Return: AX = status
  6541.             > 0000h if connection active
  6542.             = 0000h if connection lost
  6543.             < 0000h on error
  6544.  
  6545. Format of initialization request structure:
  6546. Offset    Size    Description
  6547.  00h    BYTE    operating mode
  6548.         00h wait for a call
  6549.         01h hot key activates
  6550.         02h incoming call activates
  6551.         03h initiate a call
  6552.  01h  3 BYTEs    user ID to append to config file names
  6553.  04h    WORD    DS-relative pointer to path for config files
  6554.  06h    WORD    DS-relative pointer to path for program files
  6555.  
  6556. Format of termination request structure:
  6557. Offset    Size    Description
  6558.  00h    BYTE    operating mode after termination
  6559.         00h wait for a call
  6560.         01h hot key activates
  6561.         02h incoming call activates
  6562.         80h use current mode
  6563.         FFh remove from memory
  6564.  
  6565. Values for function status:
  6566.  0000h    function completed successfully
  6567.  FFF2h    unable to establish a connection when operating mode is
  6568.     "Initiate a call"
  6569.  FFF3h    modem configuration is invalid (corrupt config)
  6570.  FFF4h    modem initialization failed (no modem response)
  6571.  FFF5h    the communications device could not be initialized
  6572.  FFF6h    the host operator aborted the function
  6573.  FFF7h    the communications driver type specified in the configuration file is
  6574.     different than the one loaded when pcANYWHERE IV was initially started
  6575.  FFF9h    the configuration file is invalid
  6576.  FFFAh    the configuration file could not be found
  6577.  FFFBh    no session is active
  6578.  FFFCh    a remote access session is active
  6579.  FFFDh    the specified operating mode is invalid
  6580. --------D-212C-------------------------------
  6581. INT 21 - DOS 1+ - GET SYSTEM TIME
  6582.     AH = 2Ch
  6583. Return: CH = hour
  6584.     CL = minute
  6585.     DH = second
  6586.     DL = 1/100 seconds
  6587. Note:    on most systems, the resolution of the system clock is about 5/100sec,
  6588.       so returned times generally do not increment by 1
  6589.     on some systems, DL may always return 00h
  6590. SeeAlso: AH=2Ah,AH=2Dh,AH=E7h,INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
  6591. SeeAlso: INT 2F/AX=120Dh
  6592. --------D-212D-------------------------------
  6593. INT 21 - DOS 1+ - SET SYSTEM TIME
  6594.     AH = 2Dh
  6595.     CH = hour
  6596.     CL = minute
  6597.     DH = second
  6598.     DL = 1/100 seconds
  6599. Return: AL = result
  6600.         00h successful
  6601.         FFh invalid time, system time unchanged
  6602. Note:    DOS 3.3+ also sets CMOS clock
  6603. SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
  6604. --------T-212D01CX7820-----------------------
  6605. INT 21 - PC-Mix - INSTALLATION CHECK
  6606.     AX = 2D01h
  6607.     CX = 7820h ('X ')
  6608.     DX = 6D69h ('MI')
  6609. Return: AL = 00h if installed
  6610. --------D-212E--DL00-------------------------
  6611. INT 21 - DOS 1+ - SET VERIFY FLAG
  6612.     AH = 2Eh
  6613.     DL = 00h (DOS 1.x/2.x only)
  6614.     AL = new state of verify flag
  6615.         00h off
  6616.         01h on
  6617. Notes:    default state at system boot is OFF
  6618.     when ON, all disk writes are verified provided the device driver
  6619.       supports read-after-write verification
  6620. SeeAlso: AH=54h
  6621. --------D-212F-------------------------------
  6622. INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
  6623.     AH = 2Fh
  6624. Return: ES:BX -> current DTA
  6625. Note:    under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
  6626. SeeAlso: AH=1Ah
  6627. --------D-2130-------------------------------
  6628. INT 21 - DOS 2+ - GET DOS VERSION
  6629.     AH = 30h
  6630. ---DOS 5+ ---
  6631.     AL = what to return in BH
  6632.         00h OEM number (as for DOS 2.0-4.0x)
  6633.         01h version flag
  6634. Return: AL = major version number (00h if DOS 1.x)
  6635.     AH = minor version number
  6636.     BL:CX = 24-bit user serial number (most versions do not use this)
  6637. ---if DOS <5 or AL=00h---
  6638.     BH = MS-DOS OEM number (see below)
  6639. ---if DOS 5+ and AL=01h---
  6640.     BH = version flag
  6641.         bit 3: DOS is in ROM
  6642.         other: reserved (0)
  6643. Notes:    the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
  6644.     the OS/2 v2.x Compatibility Box returns major version 14h (20)
  6645.     the Windows/NT DOS box returns version 5.00, subject to SETVER
  6646.     DOS 4.01 and 4.02 identify themselves as version 4.00; use
  6647.       INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
  6648.       and the later PC-DOS 4.0x and MS-DOS 4.0x
  6649.     generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
  6650.       as PC-DOS by returning OEM number 00h
  6651.     the version returned under DOS 4.0x may be modified by entries in
  6652.       the special program list (see AH=52h)
  6653.     the version returned under DOS 5+ may be modified by SETVER; use
  6654.       AX=3306h to get the true version number
  6655. SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
  6656. SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=E002h
  6657.  
  6658. Values for MS-DOS OEM number:
  6659.  00h    IBM
  6660.  01h    Compaq
  6661.  02h    MS Packaged Product
  6662.  04h    AT&T
  6663.  05h    Zenith
  6664.  06h    Hewlett-Packard
  6665.  0Dh    Packard-Bell
  6666.  16h    DEC
  6667.  23h    Olivetti
  6668.  29h    Toshiba
  6669.  33h    Novell (Windows/386 device IDs only)
  6670.  34h    MS Multimedia Systems (Windows/386 device IDs only)
  6671.  35h    MS Multimedia Systems (Windows/386 device IDs only)
  6672.  4Dh    Hewlett-Packard
  6673.  66h    PhysTechSoft (PTS-DOS)
  6674.  99h    General Software's Embedded DOS
  6675.  FFh    Microsoft, Phoenix
  6676. --------E-2130-------------------------------
  6677. INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
  6678.     AH = 30h
  6679.     EAX = 00003000h
  6680.     EBX = 50484152h ("PHAR")
  6681. Return: AL = major DOS version
  6682.     AH = minor DOS version
  6683.     EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
  6684.         BL = ASCII major version number
  6685.     EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
  6686.         EDX = address of GDA
  6687. SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
  6688. --------v-2130--DXABCD-----------------------
  6689. INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
  6690.     AH = 30h
  6691.     DX = ABCDh
  6692. Return: DX = DCBAh if installed
  6693. SeeAlso: AX=0D20h,AX=30F1h
  6694. --------T-213000BX1234-----------------------
  6695. INT 21 - CTask 2.0+ - INSTALLATION CHECK
  6696.     AX = 3000h
  6697.     BX = 1234h
  6698.     DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
  6699. Return: AL = DOS major version
  6700.     AH = DOS minor version
  6701.     CX:BX -> Ctask global data block
  6702. Program: CTask is a multitasking kernel for C written by Thomas Wagner
  6703. Note:    if first eight bytes of returned data block equal eight bytes passed
  6704.       in, CTask is resident
  6705. --------O-213000BX3000-----------------------
  6706. INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
  6707.     AX = 3000h
  6708.     BX = 3000h
  6709.     CX = DX = 3000h
  6710. Return: AX = PC-MOS version
  6711. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  6712.       system by The Software Link, Inc.
  6713. SeeAlso: AH=30h,INT 38/AH=02h,INT 38/AH=10h
  6714. ----------213022-----------------------------
  6715. INT 21 - StopPrg v2.0 - INSTALLATION CHECK
  6716.     AX = 3022h
  6717. Return: AX = DOS version (see AH=30h)
  6718.     CX = 1112h if StopPrg installed
  6719.         BX = segment of resident code
  6720. Program: StopPrg is a resident program aborter by MAK-TRAXON's Prophet
  6721. Note:    StopPrg may be temporarily disabled by storing 9090h in the word at
  6722.       0000h:04FEh
  6723. --------v-2130F1-----------------------------
  6724. INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
  6725.     AX = 30F1h
  6726. Return: AL = 00h if resident
  6727. SeeAlso: AH=30h/DX=ABCDh,AX=330Fh
  6728. ----------2130FFCX4445-----------------------
  6729. INT 21 - DESQ??? - INSTALLATION CHECK
  6730.     AX = 30FFh
  6731.     CX = 4445h ("DE")
  6732.     DX = 5351h ("SQ")
  6733. Return: BH = 05h if installed
  6734.     ???
  6735. Note:    called by DUBLDISK.COM v2.6; this function is not supported by
  6736.       DESQview, so it may be for DESQview's precursor DESQ.
  6737. SeeAlso: AX=4404h"DUBLDISK"
  6738. --------D-2131-------------------------------
  6739. INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
  6740.     AH = 31h
  6741.     AL = return code
  6742.     DX = number of paragraphs to keep resident
  6743. Return: never
  6744. Notes:    the value in DX only affects the memory block containing the PSP;
  6745.       additional memory allocated via AH=48h is not affected
  6746.     the minimum number of paragraphs which will remain resident is 11h
  6747.       for DOS 2.x and 06h for DOS 3+
  6748.     most TSRs can save some memory by releasing their environment block
  6749.       before terminating (see AH=26h,AH=49h)
  6750. SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
  6751. --------D-2132-------------------------------
  6752. INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
  6753.     AH = 32h
  6754.     DL = drive number (00h = default, 01h = A:, etc)
  6755. Return: AL = status
  6756.         00h successful
  6757.         DS:BX -> Drive Parameter Block (DPB) for specified drive
  6758.         FFh invalid or network drive
  6759. Notes:    the OS/2 compatibility box supports the DOS 3.3 version of this call
  6760.       except for the DWORD at offset 12h
  6761.     this call updates the DPB by reading the disk; the DPB may be accessed
  6762.       via the DOS list of lists (see AH=52h) if disk access is not
  6763.       desirable.
  6764.     undocumented prior to the release of DOS 5.0; only the DOS 4+ version
  6765.       of the DPB has been documented, however
  6766.     supported by DR-DOS 3.41+; DR-DOS 3.41-6.0 return the same data as
  6767.       MS-DOS 3.31
  6768. SeeAlso: AH=1Fh,AH=52h
  6769.  
  6770. Format of DOS Drive Parameter Block:
  6771. Offset    Size    Description
  6772.  00h    BYTE    drive number (00h = A:, 01h = B:, etc)
  6773.  01h    BYTE    unit number within device driver
  6774.  02h    WORD    bytes per sector
  6775.  04h    BYTE    highest sector number within a cluster
  6776.  05h    BYTE    shift count to convert clusters into sectors
  6777.  06h    WORD    number of reserved sectors at beginning of drive
  6778.  08h    BYTE    number of FATs
  6779.  09h    WORD    number of root directory entries
  6780.  0Bh    WORD    number of first sector containing user data
  6781.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  6782.         16-bit FAT if greater than 0FF6h, else 12-bit FAT
  6783.  0Fh    BYTE    number of sectors per FAT
  6784.  10h    WORD    sector number of first directory sector
  6785.  12h    DWORD    address of device driver header
  6786.  16h    BYTE    media ID byte
  6787.  17h    BYTE    00h if disk accessed, FFh if not
  6788.  18h    DWORD    pointer to next DPB
  6789. ---DOS 2.x---
  6790.  1Ch    WORD    cluster containing start of current directory, 0000h=root,
  6791.         FFFFh = unknown
  6792.  1Eh 64 BYTEs    ASCIZ pathname of current directory for drive
  6793. ---DOS 3.x---
  6794.  1Ch    WORD    cluster at which to start search for free space when writing
  6795.  1Eh    WORD    number of free clusters on drive, FFFFh = unknown
  6796. ---DOS 4.0-6.0---
  6797.  0Fh    WORD    number of sectors per FAT
  6798.  11h    WORD    sector number of first directory sector
  6799.  13h    DWORD    address of device driver header
  6800.  17h    BYTE    media ID byte
  6801.  18h    BYTE    00h if disk accessed, FFh if not
  6802.  19h    DWORD    pointer to next DPB
  6803.  1Dh    WORD    cluster at which to start search for free space when writing,
  6804.         usually the last cluster allocated
  6805.  1Fh    WORD    number of free clusters on drive, FFFFh = unknown
  6806. --------D-2133-------------------------------
  6807. INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
  6808.     AH = 33h
  6809.     AL = subfunction
  6810.         00h get current extended break state
  6811.         Return: DL = current state, 00h = off, 01h = on
  6812.         01h set state of extended ^C/^Break checking
  6813.         DL = 00h off, check only on character I/O functions
  6814.              01h on, check on all DOS functions
  6815. Note:    under DOS 3.1+ and DR-DOS, this function does not use any of the
  6816.       DOS-internal and may thus be called at any time
  6817. SeeAlso: AX=3302h
  6818. --------D-213302-----------------------------
  6819. INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
  6820.     AX = 3302h
  6821.     DL = new state
  6822.          00h for OFF or 01h for ON
  6823. Return: DL = old state of extended BREAK checking
  6824. Notes:    this function does not use any of the DOS-internal stacks and may thus
  6825.       be called at any time; one possible use is modifying Control-Break
  6826.       checking from within an interrupt handler or TSR
  6827.     not supported by DR-DOS through at least version 6.0
  6828. SeeAlso: AH=33h
  6829. --------D-213305-----------------------------
  6830. INT 21 - DOS 4+ - GET BOOT DRIVE
  6831.     AX = 3305h
  6832. Return: DL = boot drive (1=A:,...)
  6833. Notes:    fully reentrant
  6834.     NEC 9800-series PCs always call the boot drive A: and assign the other
  6835.       drive letters sequentially to the other drives in the system
  6836. --------D-213306-----------------------------
  6837. INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
  6838.     AX = 3306h
  6839. Return: BL = major version
  6840.     BH = minor version
  6841.     DL = revision (bits 2-0, all others 0)
  6842.     DH = version flags
  6843.         bit 3: DOS is in ROM
  6844.         bit 4: DOS in in HMA
  6845.     AL = FFh if true DOS version < 5.0
  6846. Notes:    this function always returns the true version number, unlike AH=30h,
  6847.       whose return value may be changed with SETVER
  6848.     because of the conflict from the CBIS PowerLAN redirector (see next
  6849.       entry), programs should check whether BH is less than 100 (64h)
  6850.       and BL is at least 5 before accepting the returned BX as the true
  6851.       version number; however, even this is not entirely reliable when
  6852.       that redirector is loaded
  6853.     fully reentrant
  6854.     OS/2 v2.1 will return BX=0A14h (version 20.10)
  6855.     the Windows NT DOS box returns BX=3205h (version 5.50)
  6856. BUG:    DR-DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
  6857.       subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
  6858.       for invalid subfunctions
  6859. SeeAlso: AH=30h,INT 2F/AX=122Fh
  6860. --------N-213306-----------------------------
  6861. INT 21 - CBIS POWERLAN - NETWORK REDIRECTOR - ???
  6862.     AX = 3306h
  6863. Return: AX = 3306h
  6864.     BL = ??? (usually 00h)
  6865.     BH = ??? (usually 00h or FFh)
  6866. Note:    unknown function, is in conflict with DOS 5+ version call
  6867. SeeAlso: AX=3306h"DOS"
  6868. --------v-21330F-----------------------------
  6869. INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
  6870.     AX = 330Fh
  6871. Return: AL = 0Fh if resident (DOS returns AL=FFh)
  6872. SeeAlso: AX=30F1h,AX=33E0h
  6873. --------k-213341-----------------------------
  6874. INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
  6875.     AX = 3341h
  6876. Return: DX = 1234h if installed
  6877.         CX = resident code segment
  6878. Program: Diet Disk is a public domain transparent data file compressor by
  6879.       Barry Nance
  6880. --------v-2133E0-----------------------------
  6881. INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
  6882.     AX = 33E0h
  6883. Return: AL = E0h if resident (DOS returns AL=FFh)
  6884. SeeAlso: AX=330Fh,AX=357Fh
  6885. --------D-2134-------------------------------
  6886. INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
  6887.     AH = 34h
  6888. Return: ES:BX -> one-byte InDOS flag
  6889. Notes:    the value of InDOS is incremented whenever an INT 21 function begins
  6890.       and decremented whenever one completes
  6891.     during an INT 28 call, it is safe to call some INT 21 functions even
  6892.       though InDOS may be 01h instead of zero
  6893.     InDOS alone is not sufficient for determining when it is safe to
  6894.       enter DOS, as the critical error handling decrements InDOS and
  6895.       increments the critical error flag for the duration of the critical
  6896.       error.  Thus, it is possible for InDOS to be zero even if DOS is
  6897.       busy.
  6898.     SMARTDRV 4.0 sets the InDOS flag while flushing its buffers to disk,
  6899.       then zeros it on completion
  6900.     the critical error flag is the byte immediately following InDOS in
  6901.       DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3+ and
  6902.       DR-DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
  6903.       is located 1AAh bytes BEFORE the critical section flag)
  6904.     for DOS 3.1+, an undocumented call exists to get the address of the
  6905.       critical error flag (see AX=5D06h)
  6906.     this function was undocumented prior to the release of DOS 5.0.
  6907. SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
  6908. --------D-2135-------------------------------
  6909. INT 21 - DOS 2+ - GET INTERRUPT VECTOR
  6910.     AH = 35h
  6911.     AL = interrupt number
  6912. Return: ES:BX -> current interrupt handler
  6913. Note:    under DR-DOS 5.0+, this function does not use any of the DOS-internal
  6914.       stacks and may thus be called at any time
  6915. SeeAlso: AH=25h,AX=2503h
  6916. --------E-213501-----------------------------
  6917. INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
  6918.     AX = 3501h
  6919. Return: CF clear if successful
  6920.         BX = new selector
  6921.     CF set on error (no more selectors available)
  6922. Note:    the new selector will be an expand-up read/write data selector with
  6923.       undefined base and limit
  6924. SeeAlso: AX=3502h,INT 31/AX=0000h
  6925. --------E-213502-----------------------------
  6926. INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
  6927.     AX = 3502h
  6928.     BX = selector
  6929. Return: CF clear if successful
  6930.     CF set on error (invalid selector)
  6931. Note:    only selectors allocated via AX=3501h should be deallocated
  6932. SeeAlso: AX=3501h,INT 31/AX=0001h
  6933. --------E-213503-----------------------------
  6934. INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
  6935.     AX = 3503h
  6936.     BX = selector
  6937.     ECX = base address
  6938. Return: CF clear if successful
  6939.     CF set on error (invalid selector)
  6940. SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
  6941. --------E-213504-----------------------------
  6942. INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
  6943.     AX = 3504h
  6944.     BX = selector
  6945. Return: CF clear if successful
  6946.         ECX = absolute base address of selector
  6947.     CF set on error (invalid selector)
  6948. SeeAlso: AX=3503h,INT 31/AX=0006h
  6949. --------E-213505-----------------------------
  6950. INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
  6951.     AX = 3505h
  6952.     BX = selector
  6953.     ECX = desired limit
  6954. Return: CF clear if successful
  6955.         ECX = actual limit set
  6956.     CF set on error (no more selectors available)
  6957. Note:    the limit will be rounded down to nearest 4K boundary if the requested
  6958.       limit is greater than 1MB
  6959. SeeAlso: AX=3503h,INT 31/AX=0008h
  6960. --------E-21350A-----------------------------
  6961. INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
  6962.     AX = 350Ah
  6963.     EBX = absolute physical address
  6964.     ECX = size in bytes of area to map
  6965. Return: CF clear if successful
  6966.     CF set on error (insufficient memory or service refused by DPMI host)
  6967. Notes:    should not make repeated calls for the same physical address
  6968.     there is no provision for unmapping memory
  6969. --------E-21350B-----------------------------
  6970. INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
  6971.     AX = 350Bh
  6972.     DS = default selector for DS
  6973. Return: CF clear
  6974.     EAX = maximum amount of memory which can be allocated via AX=350Ch
  6975. SeeAlso: AX=350Ch
  6976. --------E-21350C-----------------------------
  6977. INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
  6978.     AX = 350Ch
  6979.     ECX = size of block in bytes
  6980.     DS = default DS
  6981. Return: CF clear if successful
  6982.         EAX = near pointer to new block
  6983.         EDX = new lowest legal value for stack
  6984.     CF set on error (requested size not multiple of 4K)
  6985. SeeAlso: AX=350Bh,AX=350Dh
  6986. --------E-21350D-----------------------------
  6987. INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
  6988.     AX = 350Dh
  6989.     EBX = current ESP value
  6990.     ECX = size of block in bytes
  6991.     DS = default DS
  6992. Return: CF clear if successful
  6993.         EBX = new value for ESP
  6994.         EDX = suggested new limit for SS
  6995.     CF set on error
  6996. Note:    this function should only be called once during initialization
  6997. SeeAlso: AX=350Bh,AX=350Ch
  6998. --------v-21357F-----------------------------
  6999. INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
  7000.     AX = 357Fh
  7001. Return: DX = FFFFh if installed
  7002. SeeAlso: AX=33E0h,AX=3DFFh
  7003. --------D-2136-------------------------------
  7004. INT 21 - DOS 2+ - GET FREE DISK SPACE
  7005.     AH = 36h
  7006.     DL = drive number (00h = default, 01h = A:, etc)
  7007. Return: AX = FFFFh if invalid drive
  7008.     else
  7009.         AX = sectors per cluster
  7010.         BX = number of free clusters
  7011.         CX = bytes per sector
  7012.         DX = total clusters on drive
  7013. Notes:    free space on drive in bytes is AX * BX * CX
  7014.     total space on drive in bytes is AX * CX * DX
  7015.     "lost clusters" are considered to be in use
  7016.     according to Dave Williams' MS-DOS reference, the value in DX is
  7017.       incorrect for non-default drives after ASSIGN is run
  7018. SeeAlso: AH=1Bh,AH=1Ch
  7019. --------D-213700-----------------------------
  7020. INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
  7021.     AX = 3700h
  7022. Return: AL = status
  7023.         00h successful
  7024.         DL = current switch character
  7025.         FFh unsupported subfunction
  7026. Desc:    Determine the character which is used to introduce command switches.
  7027.       This setting is ignored by DOS commands in version 4.0 and higher,
  7028.       but is honored by many third-party programs.
  7029. Notes:    documented in some OEM versions of some releases of DOS
  7030.     supported by OS/2 compatibility box
  7031.     always returns AL=00h/DL=2Fh for MS-DOS 5+ and DR-DOS 3.41+
  7032. SeeAlso: AX=3701h
  7033. --------D-213701-----------------------------
  7034. INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
  7035.     AX = 3701h
  7036.     DL = new switch character
  7037. Return: AL = status
  7038.         00h successful
  7039.         FFh unsupported subfunction
  7040. Notes:    documented in some OEM versions of some releases of DOS
  7041.     supported by OS/2 compatibility box
  7042.     ignored by MS-DOS 5+ and DR-DOS 3.41+; DR-DOS 6.0 leaves AX unchanged
  7043. SeeAlso: AX=3700h
  7044. --------D-2137-------------------------------
  7045. INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
  7046.     AH = 37h
  7047.     AL = subfunction
  7048.         02h get availdev flag
  7049.         Return: DL = 00h \DEV\ must precede character device names
  7050.                = nonzero \DEV\ is optional
  7051.         03h set availdev flag
  7052.         DL = 00h    \DEV\ is mandatory
  7053.            = nonzero    \DEV\ is optional
  7054. Return: AL = status
  7055.         00h successful
  7056.         FFh unsupported subfunction
  7057. Notes:    all versions of DOS from 2.00 allow \DEV\ to be prepended to device
  7058.       names without generating an error even if the directory \DEV does
  7059.       not actually exist (other paths generate an error if they do not
  7060.       exist).
  7061.     although MS-DOS 3.3+ and DR-DOS 3.41+ accept these calls, they have no
  7062.       effect, and AL=02h always returns DL=FFh
  7063. --------k-2137D0BX899D-----------------------
  7064. INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
  7065.     AX = 37D0h
  7066.     BX = 899Dh ('DI' + 'ET')
  7067. Return: AL = FFh if not present as TSR (default return value from DOS)
  7068.     AX = 0000h if installed as a TSR
  7069.         CX = 899Dh
  7070.         DX = version ID
  7071. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  7072. SeeAlso: AX=37D1h,AX=37D2h,AX=37D4h,AX=37D6h,AX=37DFh,AX=4BF0h,AX=4BF1h
  7073. --------k-2137D1BX899D-----------------------
  7074. INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
  7075.     AX = 37D1h
  7076.     BX = 899Dh ('DI' + 'ET')
  7077. Return: AX = 0000h
  7078.     CX = code segment of TSR part of DIET.EXE
  7079.     DX = memory block segment of TSR DIET.EXE
  7080.         (0000h if installed as device driver)
  7081. SeeAlso: AX=37D0h,AX=37DFh
  7082. --------k-2137D2BX899D-----------------------
  7083. INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
  7084.     AX = 37D2h
  7085.     BX = 899Dh ('DI' + 'ET')
  7086. Return: AX = 0000h
  7087.     DL = control flag (00h active, else disabled)
  7088.     DH = skip flag (nonzero while TSR active)
  7089. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  7090. --------k-2137D3BX899D-----------------------
  7091. INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
  7092.     AX = 37D3h
  7093.     BX = 899Dh ('DI' + 'ET')
  7094.     DL = control flag (00h active, else disabled)
  7095.     DH = skip flag (00h)
  7096. Return: AX = 0000h
  7097. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  7098. --------k-2137D4BX899D-----------------------
  7099. INT 21 - DIET v1.43e - GET TSR OPTIONS
  7100.     AX = 37D4h
  7101.     BX = 899Dh ('DI' + 'ET')
  7102. Return: AX = 0000h
  7103.     DX = TSR options (see below)
  7104. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  7105.  
  7106. Bitfields for TSR options:
  7107.  bit 0    automated compression of DIETed file
  7108.  bit 1    automated compression of newly-created file
  7109.  bit 2    suppress DIET message
  7110.  bit 3    display original file size
  7111.  bits 4-15 reserved (0)
  7112. --------k-2137D5BX899D-----------------------
  7113. INT 21 - DIET v1.43e - SET TSR OPTIONS
  7114.     AX = 37D5h
  7115.     BX = 899Dh ('DI' + 'ET')
  7116.     DX = TSR options (see AX=37D4h)
  7117. Return: AX = 0000h
  7118. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  7119. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  7120. --------k-2137D6BX899D-----------------------
  7121. INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
  7122.     AX = 37D6h
  7123.     BX = 899Dh ('DI' + 'ET')
  7124. Return: AX = 0000h
  7125.     DS:DX -> name of temporary directory or 0000h:0000h for current dir
  7126. SeeAlso: AX=37D0h,AX=37D7h
  7127. --------k-2137D7BX899D-----------------------
  7128. INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
  7129.     AX = 37D7h
  7130.     BX = 899Dh ('DI' + 'ET')
  7131.     DS:DX -> ASCIZ name of temporary directory (max 61 chars)
  7132.         0000h:0000h for current directory
  7133. Return: AX = 0000h
  7134. Note:    the specified directory name must include a drive letter and end with
  7135.       a backslash
  7136. SeeAlso: AX=37D0h,AX=37D6h
  7137. --------k-2137DCBX899D-----------------------
  7138. INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
  7139.     AX = 37DCh
  7140.     BX = 899Dh ('DI' + 'ET')
  7141.     DS:DX -> external procedure
  7142. Return: AX = 0000h
  7143. Note:    the resident code will call the specified external procedure at the
  7144.       beginning of decompression and when compression is exited on failure
  7145. SeeAlso: AX=37DDh
  7146.  
  7147. External procedure called with:
  7148.     STACK:    WORD    class
  7149.             FFFDh creation failed for unknown reasons
  7150.             FFFEh creation failed due to lack of space
  7151.             FFFFh file creation error
  7152.             else file handle of DIETed file to be decompressed
  7153.         DWORD    -> compressed filename
  7154.         DWORD    -> decompressed or temporary filename
  7155. Return: SI,DI,BP,DS,ES must be preserved by external procedure
  7156. --------k-2137DDBX899D-----------------------
  7157. INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
  7158.     AX = 37DDh
  7159.     BX = 899Dh ('DI' + 'ET')
  7160. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  7161. Note:    unlinks the external procedure specified by AX=37DCh
  7162. SeeAlso: AX=37DCh
  7163. --------k-2137DEBX899D-----------------------
  7164. INT 21 - DIET v1.43e - READ EMS STATUS
  7165.     AX = 37DEh
  7166.     BX = 899Dh ('DI' + 'ET')
  7167. Return: AX = 0000h
  7168.     CX = EMS status
  7169.         0000h not used
  7170.         0001h used as work area
  7171.         0002h used for code and as work area
  7172.     DX = EMM handle when EMS is in use
  7173. --------k-2137DFBX899D-----------------------
  7174. INT 21 - DIET v1.43e - UNLOAD TSR
  7175.     AX = 37DFh
  7176.     BX = 899Dh ('DI' + 'ET')
  7177. Return: AX = status
  7178.         0000h successful
  7179.         00FFh failed
  7180. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  7181. SeeAlso: AX=37D0h
  7182. Index:    uninstall;DIET
  7183. --------D-2138-------------------------------
  7184. INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
  7185.     AH = 38h
  7186. --DOS 2.x--
  7187.     AL = 00h get current-country info
  7188.     DS:DX -> buffer for returned info (see below)
  7189. Return: CF set on error
  7190.         AX = error code (02h)
  7191.     CF clear if successful
  7192.         AX = country code (MS-DOS 2.11 only)
  7193.         buffer at DS:DX filled
  7194. --DOS 3+--
  7195.     AL = 00h for current country
  7196.     AL = 01h thru 0FEh for specific country with code <255
  7197.     AL = 0FFh for specific country with code >= 255
  7198.        BX = 16-bit country code
  7199.     DS:DX -> buffer for returned info (see below)
  7200. Return: CF set on error
  7201.         AX = error code (02h)
  7202.     CF clear if successful
  7203.         BX = country code
  7204.         DS:DX buffer filled
  7205. Note:    this function is not supported by the Borland DPMI host, but no error
  7206.       is returned; as a workaround, one should allocate a buffer in
  7207.       conventional memory with INT 31/AX=0100h and simulate an INT 21 with
  7208.       INT 31/AX=0300h
  7209. SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
  7210.  
  7211. Format of PC-DOS 2.x country info:
  7212. Offset    Size    Description
  7213.  00h    WORD    date format  0 = USA    mm dd yy
  7214.                  1 = Europe dd mm yy
  7215.                  2 = Japan    yy mm dd
  7216.  02h    BYTE    currency symbol
  7217.  03h    BYTE    00h
  7218.  04h    BYTE    thousands separator char
  7219.  05h    BYTE    00h
  7220.  06h    BYTE    decimal separator char
  7221.  07h    BYTE    00h
  7222.  08h 24 BYTEs    reserved
  7223.  
  7224. Format of MS-DOS 2.x,DOS 3+ country info:
  7225. Offset    Size    Description
  7226.  00h    WORD    date format (see above)
  7227.  02h  5 BYTEs    ASCIZ currency symbol string
  7228.  07h  2 BYTEs    ASCIZ thousands separator
  7229.  09h  2 BYTEs    ASCIZ decimal separator
  7230.  0Bh  2 BYTEs    ASCIZ date separator
  7231.  0Dh  2 BYTEs    ASCIZ time separator
  7232.  0Fh    BYTE    currency format
  7233.         bit 2 = set if currency symbol replaces decimal point
  7234.         bit 1 = number of spaces between value and currency symbol
  7235.         bit 0 = 0 if currency symbol precedes value
  7236.             1 if currency symbol follows value
  7237.  10h    BYTE    number of digits after decimal in currency
  7238.  11h    BYTE    time format
  7239.         bit 0 = 0 if 12-hour clock
  7240.             1 if 24-hour clock
  7241.  12h    DWORD    address of case map routine
  7242.         (FAR CALL, AL = character to map to upper case [>= 80h])
  7243.  16h  2 BYTEs    ASCIZ data-list separator
  7244.  18h 10 BYTEs    reserved
  7245.  
  7246. Values for country code:
  7247.  001h    United States
  7248.  002h    Canadian-French
  7249.  003h    Latin America
  7250.  01Fh    Netherlands
  7251.  020h    Belgium
  7252.  021h    France
  7253.  022h    Spain
  7254.  024h    Hungary (not supported by DR-DOS 5.0)
  7255.  026h    Yugoslavia (not supported by DR-DOS 5.0)
  7256.  027h    Italy
  7257.  029h    Switzerland
  7258.  02Ah    Czechoslovakia/Tjekia (not supported by DR-DOS 5.0)
  7259.  02Bh    Austria (DR-DOS 5.0)
  7260.  02Ch    United Kingdom
  7261.  02Dh    Denmark
  7262.  02Eh    Sweden
  7263.  02Fh    Norway
  7264.  030h    Poland (not supported by DR-DOS 5.0)
  7265.  031h    Germany
  7266.  037h    Brazil (not supported by DR-DOS 5.0)
  7267.  03Dh    International English [Australia in DR-DOS 5.0]
  7268.  051h    Japan (DR-DOS 5.0, MS-DOS 5.0+)
  7269.  052h    Korea (DR-DOS 5.0)
  7270.  056h    China (MS-DOS 5.0+)
  7271.  058h    Taiwan (MS-DOS 5.0+)
  7272.  05Ah    Turkey (MS-DOS 5.0+)
  7273.  15Fh    Portugal
  7274.  162h    Iceland
  7275.  166h    Finland
  7276.  311h    Middle East/Saudi Arabia (DR-DOS 5.0,MS-DOS 5.0+)
  7277.  3CCh    Israel (DR-DOS 5.0,MS-DOS 5.0+)
  7278. --------D-2138--DXFFFF-----------------------
  7279. INT 21 - DOS 3+ - SET COUNTRY CODE
  7280.     AH = 38h
  7281.     DX = FFFFh
  7282.     AL = 01h thru FEh for specific country with code <255
  7283.     AL = FFh for specific country with code >= 255
  7284.        BX = 16-bit country code (see AH=38h)
  7285. Return: CF set on error
  7286.         AX = error code (see AH=59h)
  7287.     CF clear if successful
  7288. Note:    not supported by OS/2
  7289. SeeAlso: INT 2F/AX=1403h
  7290. --------D-2139-------------------------------
  7291. INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
  7292.     AH = 39h
  7293.     DS:DX -> ASCIZ pathname
  7294. Return: CF clear if successful
  7295.         AX destroyed
  7296.     CF set on error
  7297.         AX = error code (03h,05h) (see AH=59h)
  7298. Notes:    all directories in the given path except the last must exist
  7299.     fails if the parent directory is the root and is full
  7300.     DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
  7301.       it is not possible to make that directory the current directory
  7302.       because the path would exceed 64 characters
  7303.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7304. SeeAlso: AH=3Ah,AH=3Bh,AH=6Dh,AH=E2h/SF=0Ah,INT 2F/AX=1103h
  7305. --------D-213A-------------------------------
  7306. INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
  7307.     AH = 3Ah
  7308.     DS:DX -> ASCIZ pathname of directory to be removed
  7309. Return: CF clear if successful
  7310.         AX destroyed
  7311.     CF set on error
  7312.         AX = error code (03h,05h,06h,10h) (see AH=59h)
  7313. Notes:    directory must be empty (contain only '.' and '..' entries)
  7314.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7315. SeeAlso: AH=39h,AH=3Bh,AH=E2h/SF=0Bh,INT 2F/AX=1101h
  7316. --------D-213B-------------------------------
  7317. INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
  7318.     AH = 3Bh
  7319.     DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
  7320. Return: CF clear if successful
  7321.         AX destroyed
  7322.     CF set on error
  7323.         AX = error code (03h) (see AH=59h)
  7324. Notes:    if new directory name includes a drive letter, the default drive is
  7325.       not changed, only the current directory on that drive
  7326.     changing the current directory also changes the directory in which
  7327.       FCB file calls operate
  7328.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7329. SeeAlso: AH=47h,INT 2F/AX=1105h
  7330. --------D-213C-------------------------------
  7331. INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
  7332.     AH = 3CH
  7333.     CX = file attributes (see below)
  7334.     DS:DX -> ASCIZ filename
  7335. Return: CF clear if successful
  7336.         AX = file handle
  7337.     CF set on error
  7338.         AX = error code (03h,04h,05h) (see AH=59h)
  7339. Notes:    if a file with the given name exists, it is truncated to zero length
  7340.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7341.     DR-DOS checks the system password or explicitly supplied password at
  7342.       the end of the filename against the reserved field in the directory
  7343.       entry before allowing access
  7344. SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h,INT 2F/AX=1117h
  7345.  
  7346. Bitfields for file attributes:
  7347.  bit 0    read-only
  7348.  bit 1    hidden
  7349.  bit 2    system
  7350.  bit 3    volume label (ignored)
  7351.  bit 4    reserved, must be zero (directory)
  7352.  bit 5    archive bit
  7353.  bit 7    if set, file is shareable under Novell NetWare
  7354. --------D-213D-------------------------------
  7355. INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
  7356.     AH = 3Dh
  7357.     AL = access and sharing modes (see below)
  7358.     DS:DX -> ASCIZ filename
  7359.     CL = attribute mask of files to look for (server call only)
  7360. Return: CF clear if successful
  7361.         AX = file handle
  7362.     CF set on error
  7363.         AX = error code (01h,02h,03h,04h,05h,0Ch,56h) (see AH=59h)
  7364. Notes:    file pointer is set to start of file
  7365.     file handles which are inherited from a parent also inherit sharing
  7366.       and access restrictions
  7367.     files may be opened even if given the hidden or system attributes
  7368.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7369.     DR-DOS checks the system password or explicitly supplied password at
  7370.       the end of the filename against the reserved field in the directory
  7371.       entry before allowing access
  7372.     sharing modes are only effective on local drives if SHARE is loaded
  7373. SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h
  7374.  
  7375. Bitfields for access and sharing modes:
  7376.  bits 2-0 access mode
  7377.     000 read only
  7378.     001 write only
  7379.     010 read/write
  7380.     011 (DOS 5+ internal) passed to redirector on EXEC to allow
  7381.         case-sensitive filenames
  7382.  bit 3    reserved (0)
  7383.  bits 6-4 sharing mode (DOS 3+)
  7384.     000 compatibility mode
  7385.     001 "DENYALL" prohibit both read and write access by others
  7386.     010 "DENYWRITE" prohibit write access by others
  7387.     011 "DENYREAD" prohibit read access by others
  7388.     100 "DENYNONE" allow full access by others
  7389.     111 network FCB (only available during server call)
  7390.  bit 7    inheritance
  7391.     if set, file is private to current process and will not be inherited
  7392.       by child processes
  7393.  
  7394. File sharing behavior:
  7395.       |    Second and subsequent Opens
  7396.  First      |Compat  Deny      Deny     Deny    Deny
  7397.  Open      |       All      Write     Read    None
  7398.       |R W RW R W RW R W RW R W RW R W RW
  7399.  - - - - -| - - - - - - - - - - - - - - - - -
  7400.  Compat R |Y Y Y  N N N     1 N N    N N N  1 N N
  7401.     W |Y Y Y  N N N     N N N    N N N  N N N
  7402.     RW|Y Y Y  N N N     N N N    N N N  N N N
  7403.  - - - - -|
  7404.  Deny    R |C C C  N N N     N N N    N N N  N N N
  7405.  All    W |C C C  N N N     N N N    N N N  N N N
  7406.     RW|C C C  N N N     N N N    N N N  N N N
  7407.  - - - - -|
  7408.  Deny    R |2 C C  N N N     Y N N    N N N  Y N N
  7409.  Write    W |C C C  N N N     N N N    Y N N  Y N N
  7410.     RW|C C C  N N N     N N N    N N N  Y N N
  7411.  - - - - -|
  7412.  Deny    R |C C C  N N N     N Y N    N N N  N Y N
  7413.  Read    W |C C C  N N N     N N N    N Y N  N Y N
  7414.     RW|C C C  N N N     N N N    N N N  N Y N
  7415.  - - - - -|
  7416.  Deny    R |2 C C  N N N     Y Y Y    N N N  Y Y Y
  7417.  None    W |C C C  N N N     N N N    Y Y Y  Y Y Y
  7418.     RW|C C C  N N N     N N N    N N N  Y Y Y
  7419. Legend: Y = open succeeds, N = open fails with error code 05h
  7420.     C = open fails, INT 24 generated
  7421.     1 = open succeeds if file read-only, else fails with error code
  7422.     2 = open succeeds if file read-only, else fails with INT 24
  7423. --------v-213DFF-----------------------------
  7424. INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
  7425.     AX = 3DFFh
  7426. Return: AX = 4A44h if resident
  7427. SeeAlso: AX=357Fh,AX=4203h
  7428. --------D-213E-------------------------------
  7429. INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
  7430.     AH = 3Eh
  7431.     BX = file handle
  7432. Return: CF clear if successful
  7433.         AX destroyed
  7434.     CF set on error
  7435.         AX = error code (06h) (see AH=59h)
  7436. Note:    if the file was written to, any pending disk writes are performed, the
  7437.       time and date stamps are set to the current time, and the directory
  7438.       entry is updated
  7439. SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h
  7440. --------D-213F-------------------------------
  7441. INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
  7442.     AH = 3Fh
  7443.     BX = file handle
  7444.     CX = number of bytes to read
  7445.     DS:DX -> buffer for data
  7446. Return: CF clear if successful
  7447.         AX = number of bytes actually read (0 if at EOF before call)
  7448.     CF set on error
  7449.         AX = error code (05h,06h) (see AH=59h)
  7450. Notes:    data is read beginning at current file position, and the file position
  7451.       is updated after a successful read
  7452.     the returned AX may be smaller than the request in CX if a partial
  7453.       read occurred
  7454.     if reading from CON, read stops at first CR
  7455.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7456. SeeAlso: AH=27h,AH=40h,AH=93h,INT 2F/AX=1108h,INT 2F/AX=1229h
  7457. --------G-213F-------------------------------
  7458. INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
  7459.     AH = 3Fh
  7460.     BX = handle for character device "TDHDEBUG"
  7461.     CX = number of bytes to read
  7462.     DS:DX -> buffer for status block (see below)
  7463. Return: CF clear if successful
  7464.         AX = number of bytes actually read
  7465.     CF set on error
  7466.         AX = error code (05h,06h) (see AH=59h)
  7467. SeeAlso: AH=40h"Turbo Debug"
  7468.  
  7469. Values for status of command:
  7470.  00h    successful
  7471.  01h    invalid handle
  7472.  02h    no more breakpoints available
  7473.  03h    hardware does not support specified breakpoint type
  7474.  04h    previous command prevents execution
  7475.  05h    debugger hardware not found
  7476.  06h    hardware failure
  7477.  07h    invalid command
  7478.  08h    driver not initialized yet
  7479.  FEh    recursive entry (hardware breakpoint inside hw bp handler)
  7480.  
  7481. Format of status block:
  7482. Offset    Size    Description
  7483.  00h    BYTE    status of command (see above)
  7484. ---status for command 01h---
  7485.  01h    WORD    device driver interface version number (currently 1)
  7486.  03h    WORD    device driver software version
  7487.  05h    BYTE    maximum simultaneous hardware breakpoints
  7488.  06h    BYTE    configuration bits (see below)
  7489.  07h    BYTE    supported breakpoint types (see below)
  7490.  08h    WORD    supported addressing match modes (see below)
  7491.  0Ah    WORD    supported data matches (see below)
  7492.  0Ch    BYTE    maximum data match length (01h, 02h, or 04h)
  7493.  0Dh    WORD    size of onboard memory (in KB)
  7494.  0Fh    WORD    maximum number of trace-back events
  7495.  11h    WORD    hardware breakpoint enable byte address segment (0000h if not
  7496.         supported)
  7497. ---status for command 04h---
  7498.  01h    BYTE    handle to use when referring to the just-set breakpoint
  7499.  
  7500. Bitfields for configuration bits:
  7501.  bit 0    CPU and DMA accesses are distinct
  7502.  bit 1    can detect DMA transfers
  7503.  bit 2    supports data mask
  7504.  bit 3    hardware pass counter on breakpoints
  7505.  bit 4    can match on data as well as addresses
  7506.  
  7507. Bitfields for supported breakpoint types:
  7508.  bit 0    memory read
  7509.  bit 1    memory write
  7510.  bit 2    memory read/write
  7511.  bit 3    I/O read
  7512.  bit 4    I/O write
  7513.  bit 5    I/O read/write
  7514.  bit 6    instruction fetch
  7515.  
  7516. Bitfields for supported addressing match modes:
  7517.  bit 0    any address
  7518.  bit 1    equal to test value
  7519.  bit 2    not equal
  7520.  bit 3    above test value
  7521.  bit 4    below test value
  7522.  bit 5    below or equal
  7523.  bit 6    above or equal
  7524.  bit 7    within range
  7525.  bit 8    outside range
  7526.  
  7527. Bitfields for supported data matches:
  7528.  bit 0    any data
  7529.  bit 1    equal to test value
  7530.  bit 2    not equal
  7531.  bit 3    above test value
  7532.  bit 4    below test value
  7533.  bit 5    below or equal
  7534.  bit 6    above or equal
  7535.  bit 7    within range
  7536.  bit 8    outside range
  7537. --------N-213F-------------------------------
  7538. INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
  7539.     AH = 3Fh
  7540.     BX = handle for character device "$IPCUST"
  7541.     CX = number of bytes to read
  7542.     DS:DX -> buffer for configuration data (see below)
  7543. Return: CF clear if successful
  7544.         AX = number of bytes actually read
  7545.     CF set on error
  7546.         AX = error code (05h,06h) (see AH=59h)
  7547. Notes:    if less than the entire data is read or written, the next read/write
  7548.       continues where the previous one ended; IOCTL calls AX=4402h and
  7549.       AX=4403h both reset the location at which the next operation starts
  7550.       to zero
  7551.     the data pointer is also reset to zero if the previous read or write
  7552.       reached or exceeded the end of the data, when the current function
  7553.       is read and the previous was write, or vice versa
  7554.     v2.1+ uses a new configuration method, but allows the installation
  7555.       of IPCUST.SYS for backward compatibility with other software which
  7556.       must read the PC/TCP configuration
  7557. SeeAlso: AH=40h"IPCUST",AX=4402h"IPCUST",AX=4402h"FTPSOFT"
  7558.  
  7559. Format of configuration data:
  7560. Offset    Size    Description
  7561.  00h 12 BYTEs    IPCUST.SYS device driver header
  7562.  12h    BYTE    ???
  7563.  13h    BYTE    ???
  7564.  14h    WORD    ???
  7565.  16h    BYTE    bit flags
  7566.         bit 0: send BS rather than DEL for BackSpace key
  7567.         bit 1: wrap long lines
  7568.  17h    BYTE    ???
  7569.  18h 64 BYTEs    ASCIZ hostname
  7570.  58h 64 BYTEs    ASCIZ domain name
  7571.         (fully qualified domain name is hostname.domain-name)
  7572.  98h 16 BYTEs    ASCIZ username
  7573.  A8h 64 BYTEs    ASCIZ full name
  7574.  E8h 64 BYTEs    ASCIZ office address
  7575. 128h 32 BYTEs    ASCIZ phone number
  7576. 148h    WORD    offset from GMT in minutes
  7577. 14Ah  4 BYTEs    ASCIZ timezone name
  7578. 14Eh    WORD    number of time servers
  7579. 150h  ? DWORDs    (big-endian) IP addresses for time servers
  7580.     ???
  7581. 164h    WORD    number of old-style name servers
  7582. 166h  3 DWORDs    (big-endian) IP addresses for name servers
  7583. 172h    WORD    number of domain name servers
  7584. 174h  3 DWORDs    (big-endian) IP addresses for domain name servers
  7585. 180h    DWORD    (big-endian) IP address of default gateway
  7586. 184h    DWORD    (big-endian) IP address of log server
  7587. 188h    DWORD    (big-endian) IP address of cookie server
  7588. 18Ch    DWORD    (big-endian) IP address of lpr server
  7589. 190h    DWORD    (big-endian) IP address of imagen print server
  7590. 194h 54 BYTEs    ???
  7591. 1E8h    WORD    TCP default window size in bytes
  7592. 1EAh    WORD    TCP low window size
  7593. 1ECh 64 BYTEs    ASCIZ host tabel filename
  7594. 22Ch  2 BYTEs    ???
  7595. 22Eh 80 BYTEs    ASCIZ mail relay host name
  7596. 27Eh    BYTE    ???
  7597. 27Fh    BYTE    ??? bit flags
  7598. 280h 44 BYTEs    ???
  7599. 2ACh    WORD    ???
  7600. 2AEh 202 BYTEs    ???
  7601. --------N-213F-------------------------------
  7602. INT 21 - WORKGRP.SYS - GET ENTRY POINT
  7603.     AH = 3Fh
  7604.     BX = file handle for device "NET$HLP$"
  7605.     CX = 0008h
  7606.     DS:DX -> buffer for entry point record (see AX=4402h"WORKGRP.SYS")
  7607. Return: CF clear if successful
  7608.         AX = number of bytes actually read (0 if at EOF before call)
  7609.     CF set on error
  7610.         AX = error code (05h,06h) (see AH=59h)
  7611. Program: WORKGRP.SYS is distributed with MS-DOS 6.0 to permit communication
  7612.       with PCs running Windows for Workgroups or LAN Manager
  7613. SeeAlso: AX=4402h"WORKGRP.SYS",INT 2F/AX=9400h
  7614. --------N-213F-------------------------------
  7615. INT 21 - BW-TCP - GET DRIVER INFO
  7616.     AH = 3Fh
  7617.     BX = file handle for device "ETHDEV27"
  7618.     CX = 002Bh
  7619.     DS:DX -> buffer for driver info (see below)
  7620. Return: CF clear if successful
  7621.         AX = number of bytes actually read (0 if at EOF before call)
  7622.     CF set on error
  7623.         AX = error code (05h,06h) (see AH=59h)
  7624. Program: BW-TCP is a TCP/IP protocol stack by Beame & Whiteside Software
  7625. Notes:    the B&W socket library performs an INT 21/AX=4401h with DX=0060h before
  7626.       making this call to retrieve the driver information; one should also
  7627.       call the private API interrupt with AH=15h
  7628.     the installation check for the TCP/IP stack is to test for the
  7629.       existence of the character device UDP-IP10
  7630. Index:    installation check;BW-TCP hardware driver
  7631. Index:    installation check;BW-TCP TCPIP.SYS
  7632.  
  7633. Format of driver info:
  7634. Offset    Size    Description
  7635.  00h    WORD    I/O base address
  7636.  02h    BYTE    shared memory page (01h = segment 0100h, etc.)
  7637.  03h    BYTE    interrupt vector for private API
  7638.  04h    BYTE    IRQ used by board
  7639.  05h    WORD    size of data buffer
  7640.  07h    WORD    maximum transfer window
  7641.  09h    WORD    time zone
  7642.  0Bh    BYTE    address type (01h user, 04h RARP, 05h BOOTP)
  7643.  0Ch    DWORD    internet address
  7644.  10h    WORD    "value" ???
  7645.  12h    BYTE    subnet mask
  7646.  13h    WORD    "ether_pointer" ???
  7647.  15h    WORD    offset in device driver of log server records
  7648.  17h    WORD    offset in device driver of name server records
  7649.  19h    WORD    offset in device driver of print server records
  7650.  1Bh    WORD    offset in device driver of time server records
  7651.  1Dh    WORD    offset in device driver of gateway records
  7652.  1Fh    WORD    segment address of device driver
  7653.  21h    BYTE    transfer size
  7654.  22h  9 BYTEs    network adapter board name
  7655. ---11/21/91+ ---
  7656.  23h    BYTE    ETHDEV version (major in high nybble, minor in low nybble)
  7657.  24h    BYTE    ETHDEV revision
  7658.  25h    BYTE    TCPIP version (major in high nybble, minor in low nybble)
  7659.  26h    BYTE    TCPIP revision
  7660.  27h    BYTE    BWRPC version (major in high nybble, minor in low nybble)
  7661.  28h    BYTE    BWRPC revision
  7662.  29h    BYTE    BWNFS version (major in high nybble, minor in low nybble)
  7663.  2Ah    BYTE    BWNFS revision
  7664.  2Bh    BYTE    Telnet version (major in high nybble, minor in low nybble)
  7665.  2Ch    BYTE    Telnet revision
  7666.  2Dh    BYTE    NETBIOS version (major in high nybble, minor in low nybble)
  7667.  2Eh    BYTE    NETBIOS revision
  7668. Note:    for each driver, if version=0, the driver is not installed or does
  7669.       not support the version check
  7670.  
  7671. Format of server records:
  7672. Offset    Size    Description
  7673.  00h    BYTE    number of server records following
  7674.  01h  N DWORDs    internet addresses of servers
  7675. --------y-213F-------------------------------
  7676. INT 21 - Trusted Access - NB.SYS - GET STATE
  7677.     AH = 3Fh
  7678.     BX = file handle for device "$$NB$$NB"
  7679.     CX = 0002h (size of state)
  7680.     DS:DX -> buffer for state record
  7681. Return: CF clear if successful
  7682.         AX = number of bytes actually read (0 if at EOF before call)
  7683.     CF set on error
  7684.         AX = error code (05h,06h) (see AH=59h)
  7685. Program: Trusted Access is a security and access-control package by Lassen
  7686.       Software, Inc.; NB.SYS is a device driver to prevent the user from
  7687.       terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
  7688. SeeAlso: AH=40h"NB.SYS",AX=4101h
  7689.  
  7690. Format of state record:
  7691. Offset    Size    Description
  7692.  00h    BYTE    00h off, 01h on
  7693.  01h    BYTE    keys being disabled
  7694.         bit 0: Ctrl-Break
  7695.         bit 1: SysRq
  7696.         bit 2: Ctrl and Alt
  7697.         bit 3: Ctrl-Alt-Del
  7698.         bit 7: all keys (overrides other bits)
  7699. --------D-2140-------------------------------
  7700. INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
  7701.     AH = 40h
  7702.     BX = file handle
  7703.     CX = number of bytes to write
  7704.     DS:DX -> data to write
  7705. Return: CF clear if successful
  7706.         AX = number of bytes actually written
  7707.     CF set on error
  7708.         AX = error code (05h,06h) (see AH=59h)
  7709. Notes:    if CX is zero, no data is written, and the file is truncated or
  7710.       extended to the current position
  7711.     data is written beginning at the current file position, and the file
  7712.       position is updated after a successful write
  7713.     the usual cause for AX < CX on return is a full disk
  7714. BUG:    a write of zero bytes will appear to succeed when it actually failed
  7715.       if the write is extending the file and there is not enough disk
  7716.       space for the expanded file (DOS 5.0-6.0); one should therefore check
  7717.       whether the file was in fact extended by seeking to 0 bytes from
  7718.       the end of the file (INT 21/AX=4202h/CX=0/DX=0)
  7719.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7720. SeeAlso: AH=28h,AH=3Fh,AH=93h,INT 2F/AX=1109h
  7721. --------G-2140-------------------------------
  7722. INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
  7723.     AH = 40h
  7724.     BX = handle for character device "TDHDEBUG"
  7725.     CX = number of bytes to write
  7726.     DS:DX -> hardware breakpoint command (see below)
  7727. Return: CF clear if successful
  7728.         AX = number of bytes actually written
  7729.     CF set on error
  7730.         AX = error code (05h,06h) (see AH=59h)
  7731. Note:    results are retrieved by reading from the device
  7732. SeeAlso: AH=3Fh"Turbo Debug"
  7733.  
  7734. Format of hardware breakpoint commands:
  7735. Offset    Size    Description
  7736.  00h    BYTE    command code
  7737.         00h install interrupt vectors
  7738.         01h get hardware capabilities
  7739.         02h enable hardware breakpoints
  7740.         03h disable hardware breakpoints
  7741.         04h set hardware breakpoint
  7742.         05h clear hardware breakpoint
  7743.         06h set I/O base address and reset hardware
  7744.         07h restore interrupt vectors
  7745. ---command code 00h---
  7746.  01h    DWORD    pointer to Turbo Debugger entry point to be jumped to on
  7747.         hardware breakpoint; call with CPU state the same as on
  7748.         the breakpoint except for pushing AX and placing an entry
  7749.         code (FFh if breakout button or breakpoint handle) in AH
  7750. ---command code 04h---
  7751.  01h    BYTE    breakpoint type
  7752.         00h memory read
  7753.         01h memory write
  7754.         02h memory read/write
  7755.         03h I/O read
  7756.         04h I/O write
  7757.         05h I/O read/write
  7758.         06h instruction fetch
  7759.  02h    BYTE    address matching mode
  7760.         00h any address
  7761.         01h equal to test value
  7762.         02h different from test value
  7763.         03h above test value
  7764.         04h below test value
  7765.         05h below or equal to test value
  7766.         06h above or equal to test value
  7767.         07h within inclusive range
  7768.         08h outside specified range
  7769.  03h    DWORD    32-bit linear low address
  7770.  07h    DWORD    32-bit linear high address
  7771.  0Bh    WORD    pass count
  7772.  0Dh    BYTE    data size (01h, 02h, or 04h)
  7773.  0Eh    BYTE    source of matched bus cycle
  7774.         01h CPU
  7775.         02h DMA
  7776.         03h either
  7777.  0Fh    BYTE    data-matching mode
  7778.         00h match any
  7779.         01h equal to test value
  7780.         02h different from test value
  7781.         03h above test value
  7782.         04h below test value
  7783.         05h below or equal to test value
  7784.         06h above or equal to test value
  7785.         07h within specified range
  7786.         08h outside specified range
  7787.  10h    DWORD    low data value
  7788.  14h    DWORD    high data value
  7789.  18h    DWORD    data mask specifying which bits of the data are tested
  7790. ---command code 05h---
  7791.  01h    BYTE    handle of breakpoint to clear (breakpoint returned from command
  7792.         04h)
  7793. ---command code 06h---
  7794.  01h    WORD    base address of hardware debugger board
  7795. --------N-2140-------------------------------
  7796. INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
  7797.     AH = 40h
  7798.     BX = handle for character device "$IPCUST"
  7799.     CX = number of bytes to write
  7800.     DS:DX -> buffer for configuration data (AH=3Fh"IPCUST")
  7801. Return: CF clear if successful
  7802.         AX = number of bytes actually written
  7803.     CF set on error
  7804.         AX = error code (05h,06h) (see AH=59h)
  7805. Notes:    if less than the entire data is read or written, the next read/write
  7806.       continues where the previous one ended; IOCTL calls AX=4402h and
  7807.       AX=4403h both reset the location at which the next operation starts
  7808.       to zero
  7809.     the data pointer is also reset to zero if the previous read or write
  7810.       reached or exceeded the end of the data, when the current function
  7811.       is read and the previous was write, or vice versa
  7812.     v2.1+ uses a new configuration method, but allows the installation
  7813.       of IPCUST.SYS for backward compatibility with other software which
  7814.       must read the PC/TCP configuration
  7815. SeeAlso: AH=3Fh"IPCUST",AX=4402h"IPCUST"
  7816. --------y-2140-------------------------------
  7817. INT 21 U - Trusted Access - NB.SYS - SET STATE
  7818.     AH = 40h
  7819.     BX = handle for character device "$$NB$$NB"
  7820.     DS:DX -> state record (see AH=3Fh"NB.SYS")
  7821.     CX ignored
  7822. Return: CF clear if successful
  7823.         AX = number of bytes actually written
  7824.     CF set on error
  7825.         AX = error code (05h,06h) (see AH=59h)
  7826. Program: Trusted Access is a security and access-control package by Lassen
  7827.       Software, Inc.; NB.SYS is a device driver to prevent the user from
  7828.       terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
  7829. SeeAlso: AH=3Fh"NB.SYS"
  7830. --------j-214000BX0002-----------------------
  7831. INT 21 - FARTBELL.EXE - INSTALLATION CHECK
  7832.     AX = 4000h
  7833.     BX = 0002h
  7834.     CX = 0000h
  7835.     DS:DX = 0000h:0000h
  7836. Return: CF clear if installed
  7837.         AX = CS of resident code
  7838. Program: FARTBELL is a joke program by Guenther Thiele which makes various
  7839.       noises when programs output a bell
  7840. SeeAlso: AX=4001h
  7841. --------j-214001BX0002-----------------------
  7842. INT 21 - FARTBELL.EXE - FORCE NOISE
  7843.     AX = 4001h
  7844.     BX = 0002h
  7845.     CX = 0000h
  7846.     DS:DX = 0000h:0000h
  7847. Program: FARTBELL is a joke program by Guenther Thiele which makes various
  7848.       noises when programs output a bell
  7849. SeeAlso: AX=4000h
  7850. --------D-2141-------------------------------
  7851. INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
  7852.     AH = 41h
  7853.     DS:DX -> ASCIZ filename (no wildcards, but see below)
  7854.     CL = attribute mask for deletion (server call only, see below)
  7855. Return: CF clear if successful
  7856.         AX destroyed (DOS 3.3) AL seems to be drive of deleted file
  7857.     CF set on error
  7858.         AX = error code (02h,03h,05h) (see AH=59h)
  7859. Notes:    (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
  7860.       the filespec must be canonical (as returned by AH=60h), and only
  7861.       files matching the attribute mask in CL are deleted
  7862.     DR-DOS 5.0-6.0 returns error code 03h if invoked via AX=5D00h
  7863.     DOS does not erase the file's data; it merely becomes inaccessible
  7864.       because the FAT chain for the file is cleared
  7865.     deleting a file which is currently open may lead to filesystem
  7866.       corruption.  Unless SHARE is loaded, DOS does not close the handles
  7867.       referencing the deleted file, thus allowing writes to a nonexistant
  7868.       file.
  7869.     under DRDOS and DR Multiuser DOS, this function will fail if the file
  7870.       is currently open
  7871.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7872. BUG:    DR-DOS 3.41 crashes if called via AX=5D00h
  7873. SeeAlso: AH=13h,AX=4301h,AX=4380h,AX=5D00h,AH=60h,AX=F244h,INT 2F/AX=1113h
  7874. --------y-214101DXFFFE-----------------------
  7875. INT 21 - SoftLogic Data Guardian - ???
  7876.     AX = 4101h
  7877.     DX = FFFEh
  7878. Return: AX = 0000h if installed
  7879. Note:    resident code sets several internal variables on this call
  7880. SeeAlso: AH=3Fh"NB.SYS",INT 16/AX=FFA3h/BX=0000h
  7881. --------!------------------------------------
  7882.